letta-nightly 0.6.3.dev20241211104238__tar.gz → 0.6.3.dev20241212104231__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.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/PKG-INFO +26 -14
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/README.md +25 -13
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/agent.py +0 -1
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/data_sources/connectors.py +4 -75
- letta_nightly-0.6.3.dev20241212104231/letta/memory.py +89 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/server.py +13 -12
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/settings.py +3 -3
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/pyproject.toml +1 -1
- letta_nightly-0.6.3.dev20241211104238/letta/agent_store/db.py +0 -467
- letta_nightly-0.6.3.dev20241211104238/letta/agent_store/milvus.py +0 -198
- letta_nightly-0.6.3.dev20241211104238/letta/agent_store/qdrant.py +0 -201
- letta_nightly-0.6.3.dev20241211104238/letta/agent_store/storage.py +0 -186
- letta_nightly-0.6.3.dev20241211104238/letta/memory.py +0 -366
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/LICENSE +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/__main__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/benchmark/benchmark.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/benchmark/constants.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/chat_only_agent.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/cli/cli.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/cli/cli_config.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/cli/cli_load.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/client/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/client/client.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/client/streaming.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/client/utils.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/config.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/constants.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/credentials.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/data_sources/connectors_helper.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/embeddings.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/errors.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/functions/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/functions/function_sets/base.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/functions/function_sets/extras.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/functions/functions.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/functions/helpers.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/functions/schema_generator.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/helpers/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/helpers/tool_rule_solver.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/humans/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/humans/examples/basic.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/humans/examples/cs_phd.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/interface.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/llm_api/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/llm_api/anthropic.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/llm_api/azure_openai.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/llm_api/azure_openai_constants.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/llm_api/cohere.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/llm_api/google_ai.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/llm_api/helpers.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/llm_api/llm_api_tools.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/llm_api/mistral.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/llm_api/openai.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/README.md +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/chat_completion_proxy.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/constants.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/function_parser.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/grammars/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/grammars/json.gbnf +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/json_parser.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/koboldcpp/api.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/koboldcpp/settings.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llamacpp/api.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llamacpp/settings.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/lmstudio/api.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/lmstudio/settings.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/ollama/api.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/ollama/settings.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/settings/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/settings/settings.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/settings/simple.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/utils.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/vllm/api.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/webui/api.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/webui/legacy_api.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/webui/legacy_settings.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/local_llm/webui/settings.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/log.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/main.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/metadata.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/o1_agent.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/offline_memory_agent.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/openai_backcompat/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/openai_backcompat/openai_object.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/__all__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/agents_tags.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/base.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/block.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/blocks_agents.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/enums.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/errors.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/file.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/job.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/message.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/mixins.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/organization.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/passage.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/sandbox_config.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/source.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/sqlalchemy_base.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/sqlite_functions.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/tool.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/tools_agents.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/orm/user.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/examples/anna_pa.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/examples/google_search_persona.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/examples/memgpt_doc.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/examples/memgpt_starter.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/examples/o1_persona.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/examples/offline_memory_persona.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/examples/sam.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/examples/sam_pov.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/personas/examples/sqldb/test.db +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/gpt_summarize.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/gpt_system.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_base.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_chat.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_convo_only.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_doc.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/providers.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/pytest.ini +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/agent.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/agents_tags.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/api_key.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/block.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/blocks_agents.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/embedding_config.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/enums.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/file.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/health.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/job.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/letta_base.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/letta_message.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/letta_request.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/letta_response.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/llm_config.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/memory.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/message.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/openai/chat_completion_request.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/openai/chat_completion_response.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/openai/chat_completions.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/openai/embedding_response.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/openai/openai.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/organization.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/passage.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/sandbox_config.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/source.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/tool.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/tool_rule.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/tools_agents.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/usage.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/schemas/user.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/constants.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/generate_openapi_schema.sh +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/app.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/auth/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/auth/index.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/auth_token.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/interface.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/openai/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/openai/assistants/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/openai/assistants/assistants.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/openai/assistants/schemas.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/openai/assistants/threads.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/agents.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/blocks.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/health.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/jobs.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/llms.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/organizations.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/sources.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/tools.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/routers/v1/users.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/static_files.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/rest_api/utils.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/startup.sh +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/static_files/assets/index-048c9598.js +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/static_files/assets/index-0e31b727.css +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/static_files/favicon.ico +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/static_files/index.html +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/utils.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/ws_api/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/ws_api/example_client.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/ws_api/interface.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/ws_api/protocol.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/server/ws_api/server.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/__init__.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/agents_tags_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/block_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/blocks_agents_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/job_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/message_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/organization_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/passage_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/per_agent_lock_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/sandbox_config_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/source_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/tool_execution_sandbox.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/tool_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/tool_sandbox_env/.gitkeep +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/tools_agents_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/services/user_manager.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/streaming_interface.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/streaming_utils.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/system.py +0 -0
- {letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: letta-nightly
|
|
3
|
-
Version: 0.6.3.
|
|
3
|
+
Version: 0.6.3.dev20241212104231
|
|
4
4
|
Summary: Create LLM agents with long-term memory and custom tools
|
|
5
5
|
License: Apache License
|
|
6
6
|
Author: Letta Team
|
|
@@ -82,9 +82,9 @@ Description-Content-Type: text/markdown
|
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
84
|
<picture>
|
|
85
|
-
<source media="(prefers-color-scheme: dark)" srcset="assets/Letta-logo-RGB_GreyonTransparent_cropped_small.png">
|
|
86
|
-
<source media="(prefers-color-scheme: light)" srcset="assets/Letta-logo-RGB_OffBlackonTransparent_cropped_small.png">
|
|
87
|
-
<img alt="Letta logo" src="assets/Letta-logo-RGB_GreyonOffBlack_cropped_small.png" width="500">
|
|
85
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/Letta-logo-RGB_GreyonTransparent_cropped_small.png">
|
|
86
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/Letta-logo-RGB_OffBlackonTransparent_cropped_small.png">
|
|
87
|
+
<img alt="Letta logo" src="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/Letta-logo-RGB_GreyonOffBlack_cropped_small.png" width="500">
|
|
88
88
|
</picture>
|
|
89
89
|
</p>
|
|
90
90
|
|
|
@@ -95,9 +95,9 @@ Description-Content-Type: text/markdown
|
|
|
95
95
|
|
|
96
96
|
<p align="center">
|
|
97
97
|
<picture>
|
|
98
|
-
<source media="(prefers-color-scheme: dark)" srcset="assets/example_ade_screenshot.png">
|
|
99
|
-
<source media="(prefers-color-scheme: light)" srcset="assets/example_ade_screenshot_light.png">
|
|
100
|
-
<img alt="Letta logo" src="assets/example_ade_screenshot.png" width="800">
|
|
98
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot.png">
|
|
99
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot_light.png">
|
|
100
|
+
<img alt="Letta logo" src="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot.png" width="800">
|
|
101
101
|
</picture>
|
|
102
102
|
</p>
|
|
103
103
|
|
|
@@ -133,7 +133,7 @@ Description-Content-Type: text/markdown
|
|
|
133
133
|
|
|
134
134
|
## ⚡ Quickstart
|
|
135
135
|
|
|
136
|
-
_The recommended way to use Letta is to run use Docker. To install Docker, see [Docker's installation guide](https://docs.docker.com/get-docker/). For issues with installing Docker, see [Docker's troubleshooting guide](https://docs.docker.com/desktop/troubleshoot-and-support/troubleshoot/). You can also install Letta using `pip` (see
|
|
136
|
+
_The recommended way to use Letta is to run use Docker. To install Docker, see [Docker's installation guide](https://docs.docker.com/get-docker/). For issues with installing Docker, see [Docker's troubleshooting guide](https://docs.docker.com/desktop/troubleshoot-and-support/troubleshoot/). You can also install Letta using `pip` (see instructions [below](#-quickstart-pip))._
|
|
137
137
|
|
|
138
138
|
### 🌖 Run the Letta server
|
|
139
139
|
|
|
@@ -171,9 +171,9 @@ Once the Letta server is running, you can access it via port `8283` (e.g. sendin
|
|
|
171
171
|
|
|
172
172
|
<p align="center">
|
|
173
173
|
<picture>
|
|
174
|
-
<source media="(prefers-color-scheme: dark)" srcset="assets/example_ade_screenshot.png">
|
|
175
|
-
<source media="(prefers-color-scheme: light)" srcset="assets/example_ade_screenshot_light.png">
|
|
176
|
-
<img alt="
|
|
174
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot.png">
|
|
175
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot_light.png">
|
|
176
|
+
<img alt="ADE screenshot" src="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot.png" width="800">
|
|
177
177
|
</picture>
|
|
178
178
|
</p>
|
|
179
179
|
|
|
@@ -186,9 +186,9 @@ To connect the ADE with your local Letta server, simply:
|
|
|
186
186
|
|
|
187
187
|
<p align="center">
|
|
188
188
|
<picture>
|
|
189
|
-
<source media="(prefers-color-scheme: dark)" srcset="assets/example_ade_screenshot_agents.png">
|
|
190
|
-
<source media="(prefers-color-scheme: light)" srcset="assets/example_ade_screenshot_agents_light.png">
|
|
191
|
-
<img alt="Letta logo" src="assets/example_ade_screenshot_agents.png" width="800">
|
|
189
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot_agents.png">
|
|
190
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot_agents_light.png">
|
|
191
|
+
<img alt="Letta logo" src="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot_agents.png" width="800">
|
|
192
192
|
</picture>
|
|
193
193
|
</p>
|
|
194
194
|
|
|
@@ -217,6 +217,18 @@ If your Letta server isn't running on `localhost` (for example, you deployed it
|
|
|
217
217
|
|
|
218
218
|
No, you can install Letta using `pip` (via `pip install -U letta`), as well as from source (via `poetry install`). See instructions below.
|
|
219
219
|
|
|
220
|
+
> _"What's the difference between installing with `pip` vs `Docker`?"_
|
|
221
|
+
|
|
222
|
+
Letta gives your agents persistence (they live indefinitely) by storing all your agent data in a database. Letta is designed to be used with a [PostgreSQL](https://en.wikipedia.org/wiki/PostgreSQL) (the world's most popular database), however, it is not possible to install PostgreSQL via `pip`, so the `pip` install of Letta defaults to using [SQLite](https://www.sqlite.org/). If you have a PostgreSQL instance running on your own computer, you can still connect Letta (installed via `pip`) to PostgreSQL by setting the environment variable `LETTA_PG_URI`.
|
|
223
|
+
|
|
224
|
+
**Database migrations are not officially supported for Letta when using SQLite**, so you would like to ensure that if you're able to upgrade to the latest Letta version and migrate your Letta agents data, make sure that you're using PostgreSQL as your Letta database backend. Full compatability table below:
|
|
225
|
+
|
|
226
|
+
| Installation method | Start server command | Database backend | Data migrations supported? |
|
|
227
|
+
|---|---|---|---|
|
|
228
|
+
| `pip install letta` | `letta server` | SQLite | ❌ |
|
|
229
|
+
| `pip install letta` | `export LETTA_PG_URI=...` + `letta server` | PostgreSQL | ✅ |
|
|
230
|
+
| *[Install Docker](https://www.docker.com/get-started/)* |`docker run ...` ([full command](#-run-the-letta-server)) | PostgreSQL | ✅ |
|
|
231
|
+
|
|
220
232
|
> _"How do I use the ADE locally?"_
|
|
221
233
|
|
|
222
234
|
To connect the ADE to your local Letta server, simply run your Letta server (make sure you can access `localhost:8283`) and go to [https://app.letta.com](https://app.letta.com). If you would like to use the old version of the ADE (that runs on `localhost`), downgrade to Letta version `<=0.5.0`.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<picture>
|
|
3
|
-
<source media="(prefers-color-scheme: dark)" srcset="assets/Letta-logo-RGB_GreyonTransparent_cropped_small.png">
|
|
4
|
-
<source media="(prefers-color-scheme: light)" srcset="assets/Letta-logo-RGB_OffBlackonTransparent_cropped_small.png">
|
|
5
|
-
<img alt="Letta logo" src="assets/Letta-logo-RGB_GreyonOffBlack_cropped_small.png" width="500">
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/Letta-logo-RGB_GreyonTransparent_cropped_small.png">
|
|
4
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/Letta-logo-RGB_OffBlackonTransparent_cropped_small.png">
|
|
5
|
+
<img alt="Letta logo" src="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/Letta-logo-RGB_GreyonOffBlack_cropped_small.png" width="500">
|
|
6
6
|
</picture>
|
|
7
7
|
</p>
|
|
8
8
|
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
15
|
<picture>
|
|
16
|
-
<source media="(prefers-color-scheme: dark)" srcset="assets/example_ade_screenshot.png">
|
|
17
|
-
<source media="(prefers-color-scheme: light)" srcset="assets/example_ade_screenshot_light.png">
|
|
18
|
-
<img alt="Letta logo" src="assets/example_ade_screenshot.png" width="800">
|
|
16
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot.png">
|
|
17
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot_light.png">
|
|
18
|
+
<img alt="Letta logo" src="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot.png" width="800">
|
|
19
19
|
</picture>
|
|
20
20
|
</p>
|
|
21
21
|
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
|
|
52
52
|
## ⚡ Quickstart
|
|
53
53
|
|
|
54
|
-
_The recommended way to use Letta is to run use Docker. To install Docker, see [Docker's installation guide](https://docs.docker.com/get-docker/). For issues with installing Docker, see [Docker's troubleshooting guide](https://docs.docker.com/desktop/troubleshoot-and-support/troubleshoot/). You can also install Letta using `pip` (see
|
|
54
|
+
_The recommended way to use Letta is to run use Docker. To install Docker, see [Docker's installation guide](https://docs.docker.com/get-docker/). For issues with installing Docker, see [Docker's troubleshooting guide](https://docs.docker.com/desktop/troubleshoot-and-support/troubleshoot/). You can also install Letta using `pip` (see instructions [below](#-quickstart-pip))._
|
|
55
55
|
|
|
56
56
|
### 🌖 Run the Letta server
|
|
57
57
|
|
|
@@ -89,9 +89,9 @@ Once the Letta server is running, you can access it via port `8283` (e.g. sendin
|
|
|
89
89
|
|
|
90
90
|
<p align="center">
|
|
91
91
|
<picture>
|
|
92
|
-
<source media="(prefers-color-scheme: dark)" srcset="assets/example_ade_screenshot.png">
|
|
93
|
-
<source media="(prefers-color-scheme: light)" srcset="assets/example_ade_screenshot_light.png">
|
|
94
|
-
<img alt="
|
|
92
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot.png">
|
|
93
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot_light.png">
|
|
94
|
+
<img alt="ADE screenshot" src="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot.png" width="800">
|
|
95
95
|
</picture>
|
|
96
96
|
</p>
|
|
97
97
|
|
|
@@ -104,9 +104,9 @@ To connect the ADE with your local Letta server, simply:
|
|
|
104
104
|
|
|
105
105
|
<p align="center">
|
|
106
106
|
<picture>
|
|
107
|
-
<source media="(prefers-color-scheme: dark)" srcset="assets/example_ade_screenshot_agents.png">
|
|
108
|
-
<source media="(prefers-color-scheme: light)" srcset="assets/example_ade_screenshot_agents_light.png">
|
|
109
|
-
<img alt="Letta logo" src="assets/example_ade_screenshot_agents.png" width="800">
|
|
107
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot_agents.png">
|
|
108
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot_agents_light.png">
|
|
109
|
+
<img alt="Letta logo" src="https://raw.githubusercontent.com/letta-ai/letta/refs/heads/main/assets/example_ade_screenshot_agents.png" width="800">
|
|
110
110
|
</picture>
|
|
111
111
|
</p>
|
|
112
112
|
|
|
@@ -135,6 +135,18 @@ If your Letta server isn't running on `localhost` (for example, you deployed it
|
|
|
135
135
|
|
|
136
136
|
No, you can install Letta using `pip` (via `pip install -U letta`), as well as from source (via `poetry install`). See instructions below.
|
|
137
137
|
|
|
138
|
+
> _"What's the difference between installing with `pip` vs `Docker`?"_
|
|
139
|
+
|
|
140
|
+
Letta gives your agents persistence (they live indefinitely) by storing all your agent data in a database. Letta is designed to be used with a [PostgreSQL](https://en.wikipedia.org/wiki/PostgreSQL) (the world's most popular database), however, it is not possible to install PostgreSQL via `pip`, so the `pip` install of Letta defaults to using [SQLite](https://www.sqlite.org/). If you have a PostgreSQL instance running on your own computer, you can still connect Letta (installed via `pip`) to PostgreSQL by setting the environment variable `LETTA_PG_URI`.
|
|
141
|
+
|
|
142
|
+
**Database migrations are not officially supported for Letta when using SQLite**, so you would like to ensure that if you're able to upgrade to the latest Letta version and migrate your Letta agents data, make sure that you're using PostgreSQL as your Letta database backend. Full compatability table below:
|
|
143
|
+
|
|
144
|
+
| Installation method | Start server command | Database backend | Data migrations supported? |
|
|
145
|
+
|---|---|---|---|
|
|
146
|
+
| `pip install letta` | `letta server` | SQLite | ❌ |
|
|
147
|
+
| `pip install letta` | `export LETTA_PG_URI=...` + `letta server` | PostgreSQL | ✅ |
|
|
148
|
+
| *[Install Docker](https://www.docker.com/get-started/)* |`docker run ...` ([full command](#-run-the-letta-server)) | PostgreSQL | ✅ |
|
|
149
|
+
|
|
138
150
|
> _"How do I use the ADE locally?"_
|
|
139
151
|
|
|
140
152
|
To connect the ADE to your local Letta server, simply run your Letta server (make sure you can access `localhost:8283`) and go to [https://app.letta.com](https://app.letta.com). If you would like to use the old version of the ADE (that runs on `localhost`), downgrade to Letta version `<=0.5.0`.
|
|
@@ -2,7 +2,6 @@ from typing import Dict, Iterator, List, Tuple, Optional
|
|
|
2
2
|
|
|
3
3
|
import typer
|
|
4
4
|
|
|
5
|
-
from letta.agent_store.storage import StorageConnector
|
|
6
5
|
from letta.data_sources.connectors_helper import (
|
|
7
6
|
assert_all_files_exist_locally,
|
|
8
7
|
extract_metadata_from_files,
|
|
@@ -12,6 +11,7 @@ from letta.embeddings import embedding_model
|
|
|
12
11
|
from letta.schemas.file import FileMetadata
|
|
13
12
|
from letta.schemas.passage import Passage
|
|
14
13
|
from letta.schemas.source import Source
|
|
14
|
+
from letta.services.passage_manager import PassageManager
|
|
15
15
|
from letta.services.source_manager import SourceManager
|
|
16
16
|
from letta.utils import create_uuid_from_string
|
|
17
17
|
|
|
@@ -42,7 +42,7 @@ class DataConnector:
|
|
|
42
42
|
"""
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
def load_data(connector: DataConnector, source: Source,
|
|
45
|
+
def load_data(connector: DataConnector, source: Source, passage_manager: PassageManager, source_manager: SourceManager, actor: "User", agent_id: Optional[str] = None):
|
|
46
46
|
"""Load data from a connector (generates file and passages) into a specified source_id, associated with a user_id."""
|
|
47
47
|
embedding_config = source.embedding_config
|
|
48
48
|
|
|
@@ -103,14 +103,14 @@ def load_data(connector: DataConnector, source: Source, passage_store: StorageCo
|
|
|
103
103
|
embedding_to_document_name[hashable_embedding] = file_name
|
|
104
104
|
if len(passages) >= 100:
|
|
105
105
|
# insert passages into passage store
|
|
106
|
-
|
|
106
|
+
passage_manager.create_many_passages(passages, actor)
|
|
107
107
|
|
|
108
108
|
passage_count += len(passages)
|
|
109
109
|
passages = []
|
|
110
110
|
|
|
111
111
|
if len(passages) > 0:
|
|
112
112
|
# insert passages into passage store
|
|
113
|
-
|
|
113
|
+
passage_manager.create_many_passages(passages, actor)
|
|
114
114
|
passage_count += len(passages)
|
|
115
115
|
|
|
116
116
|
return passage_count, file_count
|
|
@@ -170,74 +170,3 @@ class DirectoryConnector(DataConnector):
|
|
|
170
170
|
nodes = parser.get_nodes_from_documents(documents)
|
|
171
171
|
for node in nodes:
|
|
172
172
|
yield node.text, None
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
"""
|
|
176
|
-
The below isn't used anywhere, it isn't tested, and pretty much should be deleted.
|
|
177
|
-
- Matt
|
|
178
|
-
"""
|
|
179
|
-
# class WebConnector(DirectoryConnector):
|
|
180
|
-
# def __init__(self, urls: List[str] = None, html_to_text: bool = True):
|
|
181
|
-
# self.urls = urls
|
|
182
|
-
# self.html_to_text = html_to_text
|
|
183
|
-
#
|
|
184
|
-
# def generate_files(self) -> Iterator[Tuple[str, Dict]]: # -> Iterator[Document]:
|
|
185
|
-
# from llama_index.readers.web import SimpleWebPageReader
|
|
186
|
-
#
|
|
187
|
-
# files = SimpleWebPageReader(html_to_text=self.html_to_text).load_data(self.urls)
|
|
188
|
-
# for document in files:
|
|
189
|
-
# yield document.text, {"url": document.id_}
|
|
190
|
-
#
|
|
191
|
-
#
|
|
192
|
-
# class VectorDBConnector(DataConnector):
|
|
193
|
-
# # NOTE: this class has not been properly tested, so is unlikely to work
|
|
194
|
-
# # TODO: allow loading multiple tables (1:1 mapping between FileMetadata and Table)
|
|
195
|
-
#
|
|
196
|
-
# def __init__(
|
|
197
|
-
# self,
|
|
198
|
-
# name: str,
|
|
199
|
-
# uri: str,
|
|
200
|
-
# table_name: str,
|
|
201
|
-
# text_column: str,
|
|
202
|
-
# embedding_column: str,
|
|
203
|
-
# embedding_dim: int,
|
|
204
|
-
# ):
|
|
205
|
-
# self.name = name
|
|
206
|
-
# self.uri = uri
|
|
207
|
-
# self.table_name = table_name
|
|
208
|
-
# self.text_column = text_column
|
|
209
|
-
# self.embedding_column = embedding_column
|
|
210
|
-
# self.embedding_dim = embedding_dim
|
|
211
|
-
#
|
|
212
|
-
# # connect to db table
|
|
213
|
-
# from sqlalchemy import create_engine
|
|
214
|
-
#
|
|
215
|
-
# self.engine = create_engine(uri)
|
|
216
|
-
#
|
|
217
|
-
# def generate_files(self) -> Iterator[Tuple[str, Dict]]: # -> Iterator[Document]:
|
|
218
|
-
# yield self.table_name, None
|
|
219
|
-
#
|
|
220
|
-
# def generate_passages(self, file_text: str, file: FileMetadata, chunk_size: int = 1024) -> Iterator[Tuple[str, Dict]]: # -> Iterator[Passage]:
|
|
221
|
-
# from pgvector.sqlalchemy import Vector
|
|
222
|
-
# from sqlalchemy import Inspector, MetaData, Table, select
|
|
223
|
-
#
|
|
224
|
-
# metadata = MetaData()
|
|
225
|
-
# # Create an inspector to inspect the database
|
|
226
|
-
# inspector = Inspector.from_engine(self.engine)
|
|
227
|
-
# table_names = inspector.get_table_names()
|
|
228
|
-
# assert self.table_name in table_names, f"Table {self.table_name} not found in database: tables that exist {table_names}."
|
|
229
|
-
#
|
|
230
|
-
# table = Table(self.table_name, metadata, autoload_with=self.engine)
|
|
231
|
-
#
|
|
232
|
-
# # Prepare a select statement
|
|
233
|
-
# select_statement = select(table.c[self.text_column], table.c[self.embedding_column].cast(Vector(self.embedding_dim)))
|
|
234
|
-
#
|
|
235
|
-
# # Execute the query and fetch the results
|
|
236
|
-
# # TODO: paginate results
|
|
237
|
-
# with self.engine.connect() as connection:
|
|
238
|
-
# result = connection.execute(select_statement).fetchall()
|
|
239
|
-
#
|
|
240
|
-
# for text, embedding in result:
|
|
241
|
-
# # assume that embeddings are the same model as in config
|
|
242
|
-
# # TODO: don't re-compute embedding
|
|
243
|
-
# yield text, {"embedding": embedding}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
from typing import Callable, Dict, List, Tuple, Union
|
|
4
|
+
|
|
5
|
+
from letta.constants import MESSAGE_SUMMARY_REQUEST_ACK, MESSAGE_SUMMARY_WARNING_FRAC
|
|
6
|
+
from letta.embeddings import embedding_model, parse_and_chunk_text, query_embedding
|
|
7
|
+
from letta.llm_api.llm_api_tools import create
|
|
8
|
+
from letta.prompts.gpt_summarize import SYSTEM as SUMMARY_PROMPT_SYSTEM
|
|
9
|
+
from letta.schemas.agent import AgentState
|
|
10
|
+
from letta.schemas.enums import MessageRole
|
|
11
|
+
from letta.schemas.memory import Memory
|
|
12
|
+
from letta.schemas.message import Message
|
|
13
|
+
from letta.schemas.passage import Passage
|
|
14
|
+
from letta.utils import (
|
|
15
|
+
count_tokens,
|
|
16
|
+
extract_date_from_timestamp,
|
|
17
|
+
get_local_time,
|
|
18
|
+
printd,
|
|
19
|
+
validate_date_format,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def get_memory_functions(cls: Memory) -> Dict[str, Callable]:
|
|
24
|
+
"""Get memory functions for a memory class"""
|
|
25
|
+
functions = {}
|
|
26
|
+
|
|
27
|
+
# collect base memory functions (should not be included)
|
|
28
|
+
base_functions = []
|
|
29
|
+
for func_name in dir(Memory):
|
|
30
|
+
funct = getattr(Memory, func_name)
|
|
31
|
+
if callable(funct):
|
|
32
|
+
base_functions.append(func_name)
|
|
33
|
+
|
|
34
|
+
for func_name in dir(cls):
|
|
35
|
+
if func_name.startswith("_") or func_name in ["load", "to_dict"]: # skip base functions
|
|
36
|
+
continue
|
|
37
|
+
if func_name in base_functions: # dont use BaseMemory functions
|
|
38
|
+
continue
|
|
39
|
+
func = getattr(cls, func_name)
|
|
40
|
+
if not callable(func): # not a function
|
|
41
|
+
continue
|
|
42
|
+
functions[func_name] = func
|
|
43
|
+
return functions
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _format_summary_history(message_history: List[Message]):
|
|
47
|
+
# TODO use existing prompt formatters for this (eg ChatML)
|
|
48
|
+
return "\n".join([f"{m.role}: {m.text}" for m in message_history])
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def summarize_messages(
|
|
52
|
+
agent_state: AgentState,
|
|
53
|
+
message_sequence_to_summarize: List[Message],
|
|
54
|
+
):
|
|
55
|
+
"""Summarize a message sequence using GPT"""
|
|
56
|
+
# we need the context_window
|
|
57
|
+
context_window = agent_state.llm_config.context_window
|
|
58
|
+
|
|
59
|
+
summary_prompt = SUMMARY_PROMPT_SYSTEM
|
|
60
|
+
summary_input = _format_summary_history(message_sequence_to_summarize)
|
|
61
|
+
summary_input_tkns = count_tokens(summary_input)
|
|
62
|
+
if summary_input_tkns > MESSAGE_SUMMARY_WARNING_FRAC * context_window:
|
|
63
|
+
trunc_ratio = (MESSAGE_SUMMARY_WARNING_FRAC * context_window / summary_input_tkns) * 0.8 # For good measure...
|
|
64
|
+
cutoff = int(len(message_sequence_to_summarize) * trunc_ratio)
|
|
65
|
+
summary_input = str(
|
|
66
|
+
[summarize_messages(agent_state, message_sequence_to_summarize=message_sequence_to_summarize[:cutoff])]
|
|
67
|
+
+ message_sequence_to_summarize[cutoff:]
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
agent_state.user_id
|
|
71
|
+
dummy_agent_id = agent_state.id
|
|
72
|
+
message_sequence = []
|
|
73
|
+
message_sequence.append(Message(agent_id=dummy_agent_id, role=MessageRole.system, text=summary_prompt))
|
|
74
|
+
message_sequence.append(Message(agent_id=dummy_agent_id, role=MessageRole.assistant, text=MESSAGE_SUMMARY_REQUEST_ACK))
|
|
75
|
+
message_sequence.append(Message(agent_id=dummy_agent_id, role=MessageRole.user, text=summary_input))
|
|
76
|
+
|
|
77
|
+
# TODO: We need to eventually have a separate LLM config for the summarizer LLM
|
|
78
|
+
llm_config_no_inner_thoughts = agent_state.llm_config.model_copy(deep=True)
|
|
79
|
+
llm_config_no_inner_thoughts.put_inner_thoughts_in_kwargs = False
|
|
80
|
+
response = create(
|
|
81
|
+
llm_config=llm_config_no_inner_thoughts,
|
|
82
|
+
user_id=agent_state.user_id,
|
|
83
|
+
messages=message_sequence,
|
|
84
|
+
stream=False,
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
printd(f"summarize_messages gpt reply: {response.choices[0]}")
|
|
88
|
+
reply = response.choices[0].message.content
|
|
89
|
+
return reply
|
|
@@ -16,7 +16,6 @@ import letta.constants as constants
|
|
|
16
16
|
import letta.server.utils as server_utils
|
|
17
17
|
import letta.system as system
|
|
18
18
|
from letta.agent import Agent, save_agent
|
|
19
|
-
from letta.agent_store.storage import StorageConnector, TableType
|
|
20
19
|
from letta.chat_only_agent import ChatOnlyAgent
|
|
21
20
|
from letta.credentials import LettaCredentials
|
|
22
21
|
from letta.data_sources.connectors import DataConnector, load_data
|
|
@@ -558,7 +557,6 @@ class SyncServer(Server):
|
|
|
558
557
|
raise ValueError(command)
|
|
559
558
|
|
|
560
559
|
# attach data to agent from source
|
|
561
|
-
source_connector = StorageConnector.get_storage_connector(TableType.PASSAGES, self.config, user_id=user_id)
|
|
562
560
|
letta_agent.attach_source(
|
|
563
561
|
user=self.user_manager.get_user_by_id(user_id=user_id),
|
|
564
562
|
source_id=data_source,
|
|
@@ -1571,8 +1569,7 @@ class SyncServer(Server):
|
|
|
1571
1569
|
self.source_manager.delete_source(source_id=source_id, actor=actor)
|
|
1572
1570
|
|
|
1573
1571
|
# delete data from passage store
|
|
1574
|
-
|
|
1575
|
-
passage_store.delete({"source_id": source_id})
|
|
1572
|
+
self.passage_manager.delete_passages(actor=actor, limit=None, source_id=source_id)
|
|
1576
1573
|
|
|
1577
1574
|
# TODO: delete data from agent passage stores (?)
|
|
1578
1575
|
|
|
@@ -1614,11 +1611,10 @@ class SyncServer(Server):
|
|
|
1614
1611
|
if source is None:
|
|
1615
1612
|
raise ValueError(f"Data source {source_name} does not exist for user {user_id}")
|
|
1616
1613
|
|
|
1617
|
-
# get the data connectors
|
|
1618
|
-
passage_store = StorageConnector.get_storage_connector(TableType.PASSAGES, self.config, user_id=user_id)
|
|
1619
|
-
|
|
1620
1614
|
# load data into the document store
|
|
1621
|
-
passage_count, document_count = load_data(
|
|
1615
|
+
passage_count, document_count = load_data(
|
|
1616
|
+
connector, source, self.passage_manager, self.source_manager, actor=user, agent_id=agent_id
|
|
1617
|
+
)
|
|
1622
1618
|
return passage_count, document_count
|
|
1623
1619
|
|
|
1624
1620
|
def attach_source_to_agent(
|
|
@@ -1694,8 +1690,7 @@ class SyncServer(Server):
|
|
|
1694
1690
|
for source in sources:
|
|
1695
1691
|
|
|
1696
1692
|
# count number of passages
|
|
1697
|
-
|
|
1698
|
-
num_passages = passage_conn.size({"source_id": source.id})
|
|
1693
|
+
num_passages = self.passage_manager.size(actor=actor, source_id=source.id)
|
|
1699
1694
|
|
|
1700
1695
|
# TODO: add when files table implemented
|
|
1701
1696
|
## count number of files
|
|
@@ -1806,14 +1801,20 @@ class SyncServer(Server):
|
|
|
1806
1801
|
|
|
1807
1802
|
llm_models = []
|
|
1808
1803
|
for provider in self._enabled_providers:
|
|
1809
|
-
|
|
1804
|
+
try:
|
|
1805
|
+
llm_models.extend(provider.list_llm_models())
|
|
1806
|
+
except Exception as e:
|
|
1807
|
+
warnings.warn(f"An error occurred while listing LLM models for provider {provider}: {e}")
|
|
1810
1808
|
return llm_models
|
|
1811
1809
|
|
|
1812
1810
|
def list_embedding_models(self) -> List[EmbeddingConfig]:
|
|
1813
1811
|
"""List available embedding models"""
|
|
1814
1812
|
embedding_models = []
|
|
1815
1813
|
for provider in self._enabled_providers:
|
|
1816
|
-
|
|
1814
|
+
try:
|
|
1815
|
+
embedding_models.extend(provider.list_embedding_models())
|
|
1816
|
+
except Exception as e:
|
|
1817
|
+
warnings.warn(f"An error occurred while listing embedding models for provider {provider}: {e}")
|
|
1817
1818
|
return embedding_models
|
|
1818
1819
|
|
|
1819
1820
|
def add_llm_model(self, request: LLMConfig) -> LLMConfig:
|
{letta_nightly-0.6.3.dev20241211104238 → letta_nightly-0.6.3.dev20241212104231}/letta/settings.py
RENAMED
|
@@ -17,7 +17,7 @@ class ToolSettings(BaseSettings):
|
|
|
17
17
|
|
|
18
18
|
class ModelSettings(BaseSettings):
|
|
19
19
|
|
|
20
|
-
model_config = SettingsConfigDict(env_file='.env')
|
|
20
|
+
model_config = SettingsConfigDict(env_file='.env', extra='ignore')
|
|
21
21
|
|
|
22
22
|
# env_prefix='my_prefix_'
|
|
23
23
|
|
|
@@ -64,7 +64,7 @@ cors_origins = ["http://letta.localhost", "http://localhost:8283", "http://local
|
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
class Settings(BaseSettings):
|
|
67
|
-
model_config = SettingsConfigDict(env_prefix="letta_")
|
|
67
|
+
model_config = SettingsConfigDict(env_prefix="letta_", extra='ignore')
|
|
68
68
|
|
|
69
69
|
letta_dir: Optional[Path] = Field(Path.home() / ".letta", env="LETTA_DIR")
|
|
70
70
|
debug: Optional[bool] = False
|
|
@@ -103,7 +103,7 @@ class Settings(BaseSettings):
|
|
|
103
103
|
|
|
104
104
|
|
|
105
105
|
class TestSettings(Settings):
|
|
106
|
-
model_config = SettingsConfigDict(env_prefix="letta_test_")
|
|
106
|
+
model_config = SettingsConfigDict(env_prefix="letta_test_", extra='ignore')
|
|
107
107
|
|
|
108
108
|
letta_dir: Optional[Path] = Field(Path.home() / ".letta/test", env="LETTA_TEST_DIR")
|
|
109
109
|
|