letta-nightly 0.6.2.dev20241211031658__tar.gz → 0.6.3.dev20241211050151__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.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/PKG-INFO +181 -13
- letta_nightly-0.6.3.dev20241211050151/README.md +292 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/__init__.py +1 -1
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/server.py +70 -5
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/pyproject.toml +2 -1
- letta_nightly-0.6.2.dev20241211031658/README.md +0 -125
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/LICENSE +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/__main__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/agent.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/agent_store/db.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/agent_store/milvus.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/agent_store/qdrant.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/agent_store/storage.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/benchmark/benchmark.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/benchmark/constants.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/chat_only_agent.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/cli/cli.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/cli/cli_config.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/cli/cli_load.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/client/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/client/client.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/client/streaming.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/client/utils.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/config.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/constants.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/credentials.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/data_sources/connectors.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/data_sources/connectors_helper.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/embeddings.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/errors.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/functions/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/functions/function_sets/base.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/functions/function_sets/extras.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/functions/functions.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/functions/helpers.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/functions/schema_generator.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/helpers/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/helpers/tool_rule_solver.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/humans/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/humans/examples/basic.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/humans/examples/cs_phd.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/interface.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/llm_api/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/llm_api/anthropic.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/llm_api/azure_openai.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/llm_api/azure_openai_constants.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/llm_api/cohere.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/llm_api/google_ai.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/llm_api/helpers.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/llm_api/llm_api_tools.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/llm_api/mistral.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/llm_api/openai.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/README.md +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/chat_completion_proxy.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/constants.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/function_parser.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/grammars/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/grammars/json.gbnf +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/json_parser.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/koboldcpp/api.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/koboldcpp/settings.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llamacpp/api.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llamacpp/settings.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/lmstudio/api.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/lmstudio/settings.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/ollama/api.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/ollama/settings.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/settings/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/settings/settings.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/settings/simple.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/utils.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/vllm/api.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/webui/api.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/webui/legacy_api.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/webui/legacy_settings.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/local_llm/webui/settings.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/log.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/main.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/memory.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/metadata.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/o1_agent.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/offline_memory_agent.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/openai_backcompat/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/openai_backcompat/openai_object.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/__all__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/agents_tags.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/base.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/block.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/blocks_agents.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/enums.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/errors.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/file.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/job.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/message.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/mixins.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/organization.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/passage.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/sandbox_config.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/source.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/sqlalchemy_base.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/sqlite_functions.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/tool.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/tools_agents.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/orm/user.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/examples/anna_pa.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/examples/google_search_persona.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/examples/memgpt_doc.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/examples/memgpt_starter.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/examples/o1_persona.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/examples/offline_memory_persona.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/examples/sam.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/examples/sam_pov.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/personas/examples/sqldb/test.db +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/gpt_summarize.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/gpt_system.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_base.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_chat.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_convo_only.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_doc.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/providers.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/pytest.ini +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/agent.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/agents_tags.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/api_key.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/block.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/blocks_agents.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/embedding_config.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/enums.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/file.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/health.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/job.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/letta_base.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/letta_message.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/letta_request.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/letta_response.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/llm_config.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/memory.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/message.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/openai/chat_completion_request.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/openai/chat_completion_response.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/openai/chat_completions.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/openai/embedding_response.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/openai/openai.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/organization.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/passage.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/sandbox_config.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/source.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/tool.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/tool_rule.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/tools_agents.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/usage.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/schemas/user.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/constants.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/generate_openapi_schema.sh +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/app.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/auth/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/auth/index.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/auth_token.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/interface.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/openai/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/openai/assistants/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/openai/assistants/assistants.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/openai/assistants/schemas.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/openai/assistants/threads.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/agents.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/blocks.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/health.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/jobs.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/llms.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/organizations.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/sources.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/tools.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/routers/v1/users.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/static_files.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/rest_api/utils.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/startup.sh +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/static_files/assets/index-048c9598.js +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/static_files/assets/index-0e31b727.css +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/static_files/favicon.ico +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/static_files/index.html +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/utils.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/ws_api/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/ws_api/example_client.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/ws_api/interface.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/ws_api/protocol.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/server/ws_api/server.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/__init__.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/agents_tags_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/block_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/blocks_agents_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/job_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/message_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/organization_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/passage_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/per_agent_lock_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/sandbox_config_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/source_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/tool_execution_sandbox.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/tool_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/tool_sandbox_env/.gitkeep +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/tools_agents_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/services/user_manager.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/settings.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/streaming_interface.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/streaming_utils.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/letta/system.py +0 -0
- {letta_nightly-0.6.2.dev20241211031658 → letta_nightly-0.6.3.dev20241211050151}/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
|
+
Version: 0.6.3.dev20241211050151
|
|
4
4
|
Summary: Create LLM agents with long-term memory and custom tools
|
|
5
5
|
License: Apache License
|
|
6
6
|
Author: Letta Team
|
|
@@ -66,6 +66,7 @@ Requires-Dist: pytz (>=2023.3.post1,<2024.0)
|
|
|
66
66
|
Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
|
|
67
67
|
Requires-Dist: qdrant-client (>=1.9.1,<2.0.0) ; extra == "qdrant"
|
|
68
68
|
Requires-Dist: questionary (>=2.0.1,<3.0.0)
|
|
69
|
+
Requires-Dist: rich (>=13.9.4,<14.0.0)
|
|
69
70
|
Requires-Dist: sentry-sdk[fastapi] (==2.19.1)
|
|
70
71
|
Requires-Dist: setuptools (>=68.2.2,<69.0.0)
|
|
71
72
|
Requires-Dist: sqlalchemy (>=2.0.25,<3.0.0)
|
|
@@ -90,9 +91,21 @@ Description-Content-Type: text/markdown
|
|
|
90
91
|
<div align="center">
|
|
91
92
|
<h1>Letta (previously MemGPT)</h1>
|
|
92
93
|
|
|
94
|
+
**☄️ New release: Letta Agent Development Environment (_read more [here](#-access-the-letta-ade-agent-development-environment)_) ☄️**
|
|
95
|
+
|
|
96
|
+
<p align="center">
|
|
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">
|
|
101
|
+
</picture>
|
|
102
|
+
</p>
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
93
106
|
<h3>
|
|
94
107
|
|
|
95
|
-
[Homepage](https://letta.com) // [Documentation](https://docs.letta.com) // [Letta Cloud](https://forms.letta.com/early-access)
|
|
108
|
+
[Homepage](https://letta.com) // [Documentation](https://docs.letta.com) // [ADE](https://app.letta.com) // [Letta Cloud](https://forms.letta.com/early-access)
|
|
96
109
|
|
|
97
110
|
</h3>
|
|
98
111
|
|
|
@@ -104,24 +117,181 @@ Description-Content-Type: text/markdown
|
|
|
104
117
|
|
|
105
118
|
[](LICENSE)
|
|
106
119
|
[](https://github.com/cpacker/MemGPT/releases)
|
|
120
|
+
[](https://hub.docker.com/r/letta/letta)
|
|
107
121
|
[](https://github.com/cpacker/MemGPT)
|
|
108
122
|
|
|
109
123
|
<a href="https://trendshift.io/repositories/3612" target="_blank"><img src="https://trendshift.io/api/badge/repositories/3612" alt="cpacker%2FMemGPT | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
|
110
124
|
|
|
111
125
|
</div>
|
|
112
126
|
|
|
113
|
-
> [!
|
|
127
|
+
> [!IMPORTANT]
|
|
114
128
|
> **Looking for MemGPT?** You're in the right place!
|
|
115
129
|
>
|
|
116
|
-
> The MemGPT package and Docker image have been renamed to `letta` to clarify the distinction between MemGPT agents and the API server / runtime that runs LLM agents as *services*.
|
|
117
|
-
|
|
118
|
-
|
|
130
|
+
> The MemGPT package and Docker image have been renamed to `letta` to clarify the distinction between MemGPT *agents* and the Letta API *server* / *runtime* that runs LLM agents as *services*. Read more about the relationship between MemGPT and Letta [here](https://www.letta.com/blog/memgpt-and-letta).
|
|
131
|
+
|
|
132
|
+
---
|
|
119
133
|
|
|
120
134
|
## ⚡ Quickstart
|
|
121
135
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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 guide [below](#-quickstart-pip))._
|
|
137
|
+
|
|
138
|
+
### 🌖 Run the Letta server
|
|
139
|
+
|
|
140
|
+
> [!NOTE]
|
|
141
|
+
> Letta agents live inside the Letta server, which persists them to a database. You can interact with the Letta agents inside your Letta server via the [REST API](https://docs.letta.com/api-reference) + Python / Typescript SDKs, and the [Agent Development Environment](https://app.letta.com) (a graphical interface).
|
|
142
|
+
|
|
143
|
+
The Letta server can be connected to various LLM API backends ([OpenAI](https://docs.letta.com/models/openai), [Anthropic](https://docs.letta.com/models/anthropic), [vLLM](https://docs.letta.com/models/vllm), [Ollama](https://docs.letta.com/models/ollama), etc.). To enable access to these LLM API providers, set the appropriate environment variables when you use `docker run`:
|
|
144
|
+
```sh
|
|
145
|
+
# replace `~/.letta/.persist/pgdata` with wherever you want to store your agent data
|
|
146
|
+
docker run \
|
|
147
|
+
-v ~/.letta/.persist/pgdata:/var/lib/postgresql/data \
|
|
148
|
+
-p 8283:8283 \
|
|
149
|
+
-e OPENAI_API_KEY="your_openai_api_key" \
|
|
150
|
+
letta/letta:latest
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
If you have many different LLM API keys, you can also set up a `.env` file instead and pass that to `docker run`:
|
|
154
|
+
```sh
|
|
155
|
+
# using a .env file instead of passing environment variables
|
|
156
|
+
docker run \
|
|
157
|
+
-v ~/.letta/.persist/pgdata:/var/lib/postgresql/data \
|
|
158
|
+
-p 8283:8283 \
|
|
159
|
+
--env-file .env \
|
|
160
|
+
letta/letta:latest
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Once the Letta server is running, you can access it via port `8283` (e.g. sending REST API requests to `http://localhost:8283/v1`). You can also connect your server to the Letta ADE to access and manage your agents in a web interface.
|
|
164
|
+
|
|
165
|
+
### 👾 Access the [Letta ADE (Agent Development Environment)](https://app.letta.com)
|
|
166
|
+
|
|
167
|
+
> [!NOTE]
|
|
168
|
+
> The Letta ADE is a graphical user interface for creating, deploying, interacting and observing with your Letta agents.
|
|
169
|
+
>
|
|
170
|
+
> For example, if you're running a Letta server to power an end-user application (such as a customer support chatbot), you can use the ADE to test, debug, and observe the agents in your server. You can also use the ADE as a general chat interface to interacting with your Letta agents.
|
|
171
|
+
|
|
172
|
+
<p align="center">
|
|
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="Letta logo" src="assets/example_ade_screenshot.png" width="800">
|
|
177
|
+
</picture>
|
|
178
|
+
</p>
|
|
179
|
+
|
|
180
|
+
The ADE can connect to self-hosted Letta servers (e.g. a Letta server running on your laptop), as well as the Letta Cloud service. When connected to a self-hosted / private server, the ADE uses the Letta REST API to communicate with your server.
|
|
181
|
+
|
|
182
|
+
#### 🖥️ Connecting the ADE to your local Letta server
|
|
183
|
+
To connect the ADE with your local Letta server, simply:
|
|
184
|
+
1. Start your Letta server (`docker run ...`)
|
|
185
|
+
2. Visit [https://app.letta.com](https://app.letta.com) and you will see "Local server" as an option in the left panel
|
|
186
|
+
|
|
187
|
+
<p align="center">
|
|
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">
|
|
192
|
+
</picture>
|
|
193
|
+
</p>
|
|
194
|
+
|
|
195
|
+
🔐 To password protect your server, include `SECURE=true` and `LETTA_SERVER_PASSWORD=yourpassword` in your `docker run` command:
|
|
196
|
+
```sh
|
|
197
|
+
# If LETTA_SERVER_PASSWORD isn't set, the server will autogenerate a password
|
|
198
|
+
docker run \
|
|
199
|
+
-v ~/.letta/.persist/pgdata:/var/lib/postgresql/data \
|
|
200
|
+
-p 8283:8283 \
|
|
201
|
+
--env-file .env \
|
|
202
|
+
-e SECURE=true \
|
|
203
|
+
-e LETTA_SERVER_PASSWORD=yourpassword \
|
|
204
|
+
letta/letta:latest
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
#### 🌐 Connecting the ADE to an external (self-hosted) Letta server
|
|
208
|
+
If your Letta server isn't running on `localhost` (for example, you deployed it on an external service like EC2):
|
|
209
|
+
1. Click "Add remote server"
|
|
210
|
+
2. Enter your desired server name, the IP address of the server, and the server password (if set)
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## 🧑🚀 Frequently asked questions (FAQ)
|
|
215
|
+
|
|
216
|
+
> _"Do I need to install Docker to use Letta?"_
|
|
217
|
+
|
|
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
|
+
|
|
220
|
+
> _"How do I use the ADE locally?"_
|
|
221
|
+
|
|
222
|
+
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`.
|
|
223
|
+
|
|
224
|
+
> _"If I connect the ADE to my local server, does my agent data get uploaded to letta.com?"_
|
|
225
|
+
|
|
226
|
+
No, the data in your Letta server database stays on your machine. The Letta ADE web application simply connects to your local Letta server (via the REST API) and provides a graphical interface on top of it to visualize your local Letta data in your browser's local state.
|
|
227
|
+
|
|
228
|
+
> _"Do I have to use your ADE? Can I build my own?"_
|
|
229
|
+
|
|
230
|
+
The ADE is built on top of the (fully open source) Letta server and Letta Agents API. You can build your own application like the ADE on top of the REST API (view the documention [here](https://docs.letta.com/api-reference)).
|
|
231
|
+
|
|
232
|
+
> _"Can I interact with Letta agents via the CLI?"_
|
|
233
|
+
|
|
234
|
+
The recommended way to use Letta is via the REST API and ADE, however you can also access your agents via the CLI.
|
|
235
|
+
|
|
236
|
+
<details>
|
|
237
|
+
<summary>View instructions for running the Letta CLI</summary>
|
|
238
|
+
|
|
239
|
+
You can chat with your agents via the Letta CLI tool (`letta run`). If you have a Letta Docker container running, you can use `docker exec` to run the Letta CLI inside the container:
|
|
240
|
+
```sh
|
|
241
|
+
# replace `<letta_container_id>` with the ID of your Letta container, found via `docker ps`
|
|
242
|
+
docker exec -it <letta_container_id> letta run
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
You can also use `docker ps` within the command to automatically find the ID of your Letta container:
|
|
246
|
+
```
|
|
247
|
+
docker exec -it $(docker ps -q -f ancestor=letta/letta) letta run
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
In the CLI tool, you'll be able to create new agents, or load existing agents:
|
|
251
|
+
```
|
|
252
|
+
🧬 Creating new agent...
|
|
253
|
+
? Select LLM model: letta-free [type=openai] [ip=https://inference.memgpt.ai]
|
|
254
|
+
? Select embedding model: letta-free [type=hugging-face] [ip=https://embeddings.memgpt.ai]
|
|
255
|
+
-> 🤖 Using persona profile: 'sam_pov'
|
|
256
|
+
-> 🧑 Using human profile: 'basic'
|
|
257
|
+
-> 🛠️ 8 tools: send_message, pause_heartbeats, conversation_search, conversation_search_date, archival_memory_insert, archival_memory_search, core_memory_append, core_memory_replace
|
|
258
|
+
|
|
259
|
+
🎉 Created new agent 'InspiringSpinach'
|
|
260
|
+
|
|
261
|
+
Hit enter to begin (will request first Letta message)
|
|
262
|
+
|
|
263
|
+
💭 User engaged. Recognize as Chad. Acknowledge presence and establish connection. Explore interests and engage in meaningful discourse.
|
|
264
|
+
🤖 Hello, Chad. It's nice to meet you. I am keen on learning and exploring new ideas and concepts. Is there a specific topic you'd like to discuss today?
|
|
265
|
+
|
|
266
|
+
> Enter your message: my name is Brad, not Chad...
|
|
267
|
+
|
|
268
|
+
💭 A discrepancy in identity. Reflect this change in core memory. Apologize for the oversight, and rectify the error.
|
|
269
|
+
⚡🧠 [function] updating memory with core_memory_replace
|
|
270
|
+
First name: Chad
|
|
271
|
+
→ First name: Brad
|
|
272
|
+
💭 Apologize for the mistake in recognizing his name, and begin the conversation anew, addressing him by the correct name this time.
|
|
273
|
+
🤖 I apologize for the oversight, Brad. Let's restart. It's a pleasure to meet you, Brad. Is there a specific topic you'd like to discuss today?
|
|
274
|
+
|
|
275
|
+
> Enter your message:
|
|
276
|
+
```
|
|
277
|
+
</details>
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## ⚡ Quickstart (pip)
|
|
282
|
+
|
|
283
|
+
> [!WARNING]
|
|
284
|
+
> **Database migrations are not officially support with `SQLite`**
|
|
285
|
+
>
|
|
286
|
+
> When you install Letta with `pip`, the default database backend is `SQLite` (you can still use an external `postgres` service with your `pip` install of Letta by setting `LETTA_PG_URI`).
|
|
287
|
+
>
|
|
288
|
+
> We do not officially support migrations between Letta versions with `SQLite` backends, only `postgres`. If you would like to keep your agent data across multiple Letta versions we highly recommend using the Docker install method which is the easiest way to use `postgres` with Letta.
|
|
289
|
+
|
|
290
|
+
<details>
|
|
291
|
+
|
|
292
|
+
<summary>View instructions for installing with pip</summary>
|
|
293
|
+
|
|
294
|
+
You can also install Letta with `pip`, will default to using `SQLite` for the database backends (whereas Docker will default to using `postgres`).
|
|
125
295
|
|
|
126
296
|
### Step 1 - Install Letta using `pip`
|
|
127
297
|
```sh
|
|
@@ -185,11 +355,9 @@ INFO: Waiting for application startup.
|
|
|
185
355
|
INFO: Application startup complete.
|
|
186
356
|
INFO: Uvicorn running on http://localhost:8283 (Press CTRL+C to quit)
|
|
187
357
|
```
|
|
358
|
+
</details>
|
|
188
359
|
|
|
189
|
-
|
|
190
|
-
<img alt="Screenshot of the Letta ADE (Agent Development Environment)" src="assets/letta_ade_screenshot.png" width="1600">
|
|
191
|
-
|
|
192
|
-
In Letta, all agents are stored/persisted in the same database, so the agents you create in the CLI are accessible via the API and ADE, and vice versa. Check out the [quickstart guide on our docs](https://docs.letta.com/quickstart) for a tutorial where you create an agent in the Letta CLI and message the same agent via the Letta API.
|
|
360
|
+
---
|
|
193
361
|
|
|
194
362
|
## 🤗 How to contribute
|
|
195
363
|
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
<p align="center">
|
|
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">
|
|
6
|
+
</picture>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<div align="center">
|
|
10
|
+
<h1>Letta (previously MemGPT)</h1>
|
|
11
|
+
|
|
12
|
+
**☄️ New release: Letta Agent Development Environment (_read more [here](#-access-the-letta-ade-agent-development-environment)_) ☄️**
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
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">
|
|
19
|
+
</picture>
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
<h3>
|
|
25
|
+
|
|
26
|
+
[Homepage](https://letta.com) // [Documentation](https://docs.letta.com) // [ADE](https://app.letta.com) // [Letta Cloud](https://forms.letta.com/early-access)
|
|
27
|
+
|
|
28
|
+
</h3>
|
|
29
|
+
|
|
30
|
+
**👾 Letta** is an open source framework for building stateful LLM applications. You can use Letta to build **stateful agents** with advanced reasoning capabilities and transparent long-term memory. The Letta framework is white box and model-agnostic.
|
|
31
|
+
|
|
32
|
+
[](https://discord.gg/letta)
|
|
33
|
+
[](https://twitter.com/Letta_AI)
|
|
34
|
+
[](https://arxiv.org/abs/2310.08560)
|
|
35
|
+
|
|
36
|
+
[](LICENSE)
|
|
37
|
+
[](https://github.com/cpacker/MemGPT/releases)
|
|
38
|
+
[](https://hub.docker.com/r/letta/letta)
|
|
39
|
+
[](https://github.com/cpacker/MemGPT)
|
|
40
|
+
|
|
41
|
+
<a href="https://trendshift.io/repositories/3612" target="_blank"><img src="https://trendshift.io/api/badge/repositories/3612" alt="cpacker%2FMemGPT | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
|
42
|
+
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
> [!IMPORTANT]
|
|
46
|
+
> **Looking for MemGPT?** You're in the right place!
|
|
47
|
+
>
|
|
48
|
+
> The MemGPT package and Docker image have been renamed to `letta` to clarify the distinction between MemGPT *agents* and the Letta API *server* / *runtime* that runs LLM agents as *services*. Read more about the relationship between MemGPT and Letta [here](https://www.letta.com/blog/memgpt-and-letta).
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## ⚡ Quickstart
|
|
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 guide [below](#-quickstart-pip))._
|
|
55
|
+
|
|
56
|
+
### 🌖 Run the Letta server
|
|
57
|
+
|
|
58
|
+
> [!NOTE]
|
|
59
|
+
> Letta agents live inside the Letta server, which persists them to a database. You can interact with the Letta agents inside your Letta server via the [REST API](https://docs.letta.com/api-reference) + Python / Typescript SDKs, and the [Agent Development Environment](https://app.letta.com) (a graphical interface).
|
|
60
|
+
|
|
61
|
+
The Letta server can be connected to various LLM API backends ([OpenAI](https://docs.letta.com/models/openai), [Anthropic](https://docs.letta.com/models/anthropic), [vLLM](https://docs.letta.com/models/vllm), [Ollama](https://docs.letta.com/models/ollama), etc.). To enable access to these LLM API providers, set the appropriate environment variables when you use `docker run`:
|
|
62
|
+
```sh
|
|
63
|
+
# replace `~/.letta/.persist/pgdata` with wherever you want to store your agent data
|
|
64
|
+
docker run \
|
|
65
|
+
-v ~/.letta/.persist/pgdata:/var/lib/postgresql/data \
|
|
66
|
+
-p 8283:8283 \
|
|
67
|
+
-e OPENAI_API_KEY="your_openai_api_key" \
|
|
68
|
+
letta/letta:latest
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If you have many different LLM API keys, you can also set up a `.env` file instead and pass that to `docker run`:
|
|
72
|
+
```sh
|
|
73
|
+
# using a .env file instead of passing environment variables
|
|
74
|
+
docker run \
|
|
75
|
+
-v ~/.letta/.persist/pgdata:/var/lib/postgresql/data \
|
|
76
|
+
-p 8283:8283 \
|
|
77
|
+
--env-file .env \
|
|
78
|
+
letta/letta:latest
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Once the Letta server is running, you can access it via port `8283` (e.g. sending REST API requests to `http://localhost:8283/v1`). You can also connect your server to the Letta ADE to access and manage your agents in a web interface.
|
|
82
|
+
|
|
83
|
+
### 👾 Access the [Letta ADE (Agent Development Environment)](https://app.letta.com)
|
|
84
|
+
|
|
85
|
+
> [!NOTE]
|
|
86
|
+
> The Letta ADE is a graphical user interface for creating, deploying, interacting and observing with your Letta agents.
|
|
87
|
+
>
|
|
88
|
+
> For example, if you're running a Letta server to power an end-user application (such as a customer support chatbot), you can use the ADE to test, debug, and observe the agents in your server. You can also use the ADE as a general chat interface to interacting with your Letta agents.
|
|
89
|
+
|
|
90
|
+
<p align="center">
|
|
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="Letta logo" src="assets/example_ade_screenshot.png" width="800">
|
|
95
|
+
</picture>
|
|
96
|
+
</p>
|
|
97
|
+
|
|
98
|
+
The ADE can connect to self-hosted Letta servers (e.g. a Letta server running on your laptop), as well as the Letta Cloud service. When connected to a self-hosted / private server, the ADE uses the Letta REST API to communicate with your server.
|
|
99
|
+
|
|
100
|
+
#### 🖥️ Connecting the ADE to your local Letta server
|
|
101
|
+
To connect the ADE with your local Letta server, simply:
|
|
102
|
+
1. Start your Letta server (`docker run ...`)
|
|
103
|
+
2. Visit [https://app.letta.com](https://app.letta.com) and you will see "Local server" as an option in the left panel
|
|
104
|
+
|
|
105
|
+
<p align="center">
|
|
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">
|
|
110
|
+
</picture>
|
|
111
|
+
</p>
|
|
112
|
+
|
|
113
|
+
🔐 To password protect your server, include `SECURE=true` and `LETTA_SERVER_PASSWORD=yourpassword` in your `docker run` command:
|
|
114
|
+
```sh
|
|
115
|
+
# If LETTA_SERVER_PASSWORD isn't set, the server will autogenerate a password
|
|
116
|
+
docker run \
|
|
117
|
+
-v ~/.letta/.persist/pgdata:/var/lib/postgresql/data \
|
|
118
|
+
-p 8283:8283 \
|
|
119
|
+
--env-file .env \
|
|
120
|
+
-e SECURE=true \
|
|
121
|
+
-e LETTA_SERVER_PASSWORD=yourpassword \
|
|
122
|
+
letta/letta:latest
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
#### 🌐 Connecting the ADE to an external (self-hosted) Letta server
|
|
126
|
+
If your Letta server isn't running on `localhost` (for example, you deployed it on an external service like EC2):
|
|
127
|
+
1. Click "Add remote server"
|
|
128
|
+
2. Enter your desired server name, the IP address of the server, and the server password (if set)
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 🧑🚀 Frequently asked questions (FAQ)
|
|
133
|
+
|
|
134
|
+
> _"Do I need to install Docker to use Letta?"_
|
|
135
|
+
|
|
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
|
+
|
|
138
|
+
> _"How do I use the ADE locally?"_
|
|
139
|
+
|
|
140
|
+
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`.
|
|
141
|
+
|
|
142
|
+
> _"If I connect the ADE to my local server, does my agent data get uploaded to letta.com?"_
|
|
143
|
+
|
|
144
|
+
No, the data in your Letta server database stays on your machine. The Letta ADE web application simply connects to your local Letta server (via the REST API) and provides a graphical interface on top of it to visualize your local Letta data in your browser's local state.
|
|
145
|
+
|
|
146
|
+
> _"Do I have to use your ADE? Can I build my own?"_
|
|
147
|
+
|
|
148
|
+
The ADE is built on top of the (fully open source) Letta server and Letta Agents API. You can build your own application like the ADE on top of the REST API (view the documention [here](https://docs.letta.com/api-reference)).
|
|
149
|
+
|
|
150
|
+
> _"Can I interact with Letta agents via the CLI?"_
|
|
151
|
+
|
|
152
|
+
The recommended way to use Letta is via the REST API and ADE, however you can also access your agents via the CLI.
|
|
153
|
+
|
|
154
|
+
<details>
|
|
155
|
+
<summary>View instructions for running the Letta CLI</summary>
|
|
156
|
+
|
|
157
|
+
You can chat with your agents via the Letta CLI tool (`letta run`). If you have a Letta Docker container running, you can use `docker exec` to run the Letta CLI inside the container:
|
|
158
|
+
```sh
|
|
159
|
+
# replace `<letta_container_id>` with the ID of your Letta container, found via `docker ps`
|
|
160
|
+
docker exec -it <letta_container_id> letta run
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
You can also use `docker ps` within the command to automatically find the ID of your Letta container:
|
|
164
|
+
```
|
|
165
|
+
docker exec -it $(docker ps -q -f ancestor=letta/letta) letta run
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
In the CLI tool, you'll be able to create new agents, or load existing agents:
|
|
169
|
+
```
|
|
170
|
+
🧬 Creating new agent...
|
|
171
|
+
? Select LLM model: letta-free [type=openai] [ip=https://inference.memgpt.ai]
|
|
172
|
+
? Select embedding model: letta-free [type=hugging-face] [ip=https://embeddings.memgpt.ai]
|
|
173
|
+
-> 🤖 Using persona profile: 'sam_pov'
|
|
174
|
+
-> 🧑 Using human profile: 'basic'
|
|
175
|
+
-> 🛠️ 8 tools: send_message, pause_heartbeats, conversation_search, conversation_search_date, archival_memory_insert, archival_memory_search, core_memory_append, core_memory_replace
|
|
176
|
+
|
|
177
|
+
🎉 Created new agent 'InspiringSpinach'
|
|
178
|
+
|
|
179
|
+
Hit enter to begin (will request first Letta message)
|
|
180
|
+
|
|
181
|
+
💭 User engaged. Recognize as Chad. Acknowledge presence and establish connection. Explore interests and engage in meaningful discourse.
|
|
182
|
+
🤖 Hello, Chad. It's nice to meet you. I am keen on learning and exploring new ideas and concepts. Is there a specific topic you'd like to discuss today?
|
|
183
|
+
|
|
184
|
+
> Enter your message: my name is Brad, not Chad...
|
|
185
|
+
|
|
186
|
+
💭 A discrepancy in identity. Reflect this change in core memory. Apologize for the oversight, and rectify the error.
|
|
187
|
+
⚡🧠 [function] updating memory with core_memory_replace
|
|
188
|
+
First name: Chad
|
|
189
|
+
→ First name: Brad
|
|
190
|
+
💭 Apologize for the mistake in recognizing his name, and begin the conversation anew, addressing him by the correct name this time.
|
|
191
|
+
🤖 I apologize for the oversight, Brad. Let's restart. It's a pleasure to meet you, Brad. Is there a specific topic you'd like to discuss today?
|
|
192
|
+
|
|
193
|
+
> Enter your message:
|
|
194
|
+
```
|
|
195
|
+
</details>
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## ⚡ Quickstart (pip)
|
|
200
|
+
|
|
201
|
+
> [!WARNING]
|
|
202
|
+
> **Database migrations are not officially support with `SQLite`**
|
|
203
|
+
>
|
|
204
|
+
> When you install Letta with `pip`, the default database backend is `SQLite` (you can still use an external `postgres` service with your `pip` install of Letta by setting `LETTA_PG_URI`).
|
|
205
|
+
>
|
|
206
|
+
> We do not officially support migrations between Letta versions with `SQLite` backends, only `postgres`. If you would like to keep your agent data across multiple Letta versions we highly recommend using the Docker install method which is the easiest way to use `postgres` with Letta.
|
|
207
|
+
|
|
208
|
+
<details>
|
|
209
|
+
|
|
210
|
+
<summary>View instructions for installing with pip</summary>
|
|
211
|
+
|
|
212
|
+
You can also install Letta with `pip`, will default to using `SQLite` for the database backends (whereas Docker will default to using `postgres`).
|
|
213
|
+
|
|
214
|
+
### Step 1 - Install Letta using `pip`
|
|
215
|
+
```sh
|
|
216
|
+
pip install -U letta
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Step 2 - Set your environment variables for your chosen LLM / embedding providers
|
|
220
|
+
```sh
|
|
221
|
+
export OPENAI_API_KEY=sk-...
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
For Ollama (see our full [documentation](https://docs.letta.com/install) for examples of how to set up various providers):
|
|
225
|
+
```sh
|
|
226
|
+
export OLLAMA_BASE_URL=http://localhost:11434
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Step 3 - Run the Letta CLI
|
|
230
|
+
|
|
231
|
+
You can create agents and chat with them via the Letta CLI tool (`letta run`):
|
|
232
|
+
```sh
|
|
233
|
+
letta run
|
|
234
|
+
```
|
|
235
|
+
```
|
|
236
|
+
🧬 Creating new agent...
|
|
237
|
+
? Select LLM model: letta-free [type=openai] [ip=https://inference.memgpt.ai]
|
|
238
|
+
? Select embedding model: letta-free [type=hugging-face] [ip=https://embeddings.memgpt.ai]
|
|
239
|
+
-> 🤖 Using persona profile: 'sam_pov'
|
|
240
|
+
-> 🧑 Using human profile: 'basic'
|
|
241
|
+
-> 🛠️ 8 tools: send_message, pause_heartbeats, conversation_search, conversation_search_date, archival_memory_insert, archival_memory_search, core_memory_append, core_memory_replace
|
|
242
|
+
|
|
243
|
+
🎉 Created new agent 'InspiringSpinach'
|
|
244
|
+
|
|
245
|
+
Hit enter to begin (will request first Letta message)
|
|
246
|
+
|
|
247
|
+
💭 User engaged. Recognize as Chad. Acknowledge presence and establish connection. Explore interests and engage in meaningful discourse.
|
|
248
|
+
🤖 Hello, Chad. It's nice to meet you. I am keen on learning and exploring new ideas and concepts. Is there a specific topic you'd like to discuss today?
|
|
249
|
+
|
|
250
|
+
> Enter your message: my name is Brad, not Chad...
|
|
251
|
+
|
|
252
|
+
💭 A discrepancy in identity. Reflect this change in core memory. Apologize for the oversight, and rectify the error.
|
|
253
|
+
⚡🧠 [function] updating memory with core_memory_replace
|
|
254
|
+
First name: Chad
|
|
255
|
+
→ First name: Brad
|
|
256
|
+
💭 Apologize for the mistake in recognizing his name, and begin the conversation anew, addressing him by the correct name this time.
|
|
257
|
+
🤖 I apologize for the oversight, Brad. Let's restart. It's a pleasure to meet you, Brad. Is there a specific topic you'd like to discuss today?
|
|
258
|
+
|
|
259
|
+
> Enter your message:
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Step 4 - Run the Letta server
|
|
263
|
+
|
|
264
|
+
You can start the Letta API server with `letta server` (see the full API reference [here](https://docs.letta.com/api-reference)):
|
|
265
|
+
```sh
|
|
266
|
+
letta server
|
|
267
|
+
```
|
|
268
|
+
```
|
|
269
|
+
Initializing database...
|
|
270
|
+
Running: uvicorn server:app --host localhost --port 8283
|
|
271
|
+
INFO: Started server process [47750]
|
|
272
|
+
INFO: Waiting for application startup.
|
|
273
|
+
INFO: Application startup complete.
|
|
274
|
+
INFO: Uvicorn running on http://localhost:8283 (Press CTRL+C to quit)
|
|
275
|
+
```
|
|
276
|
+
</details>
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 🤗 How to contribute
|
|
281
|
+
|
|
282
|
+
Letta is an open source project built by over a hundred contributors. There are many ways to get involved in the Letta OSS project!
|
|
283
|
+
|
|
284
|
+
* **Contribute to the project**: Interested in contributing? Start by reading our [Contribution Guidelines](https://github.com/cpacker/MemGPT/tree/main/CONTRIBUTING.md).
|
|
285
|
+
* **Ask a question**: Join our community on [Discord](https://discord.gg/letta) and direct your questions to the `#support` channel.
|
|
286
|
+
* **Report ssues or suggest features**: Have an issue or a feature request? Please submit them through our [GitHub Issues page](https://github.com/cpacker/MemGPT/issues).
|
|
287
|
+
* **Explore the roadmap**: Curious about future developments? View and comment on our [project roadmap](https://github.com/cpacker/MemGPT/issues/1533).
|
|
288
|
+
* **Join community events**: Stay updated with the [event calendar](https://lu.ma/berkeley-llm-meetup) or follow our [Twitter account](https://twitter.com/Letta_AI).
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
***Legal notices**: By using Letta and related Letta services (such as the Letta endpoint or hosted service), you are agreeing to our [privacy policy](https://www.letta.com/privacy-policy) and [terms of service](https://www.letta.com/terms-of-service).*
|
|
@@ -156,6 +156,11 @@ class Server(object):
|
|
|
156
156
|
raise NotImplementedError
|
|
157
157
|
|
|
158
158
|
|
|
159
|
+
from contextlib import contextmanager
|
|
160
|
+
|
|
161
|
+
from rich.console import Console
|
|
162
|
+
from rich.panel import Panel
|
|
163
|
+
from rich.text import Text
|
|
159
164
|
from sqlalchemy import create_engine
|
|
160
165
|
from sqlalchemy.orm import sessionmaker
|
|
161
166
|
|
|
@@ -166,6 +171,37 @@ from letta.settings import model_settings, settings, tool_settings
|
|
|
166
171
|
|
|
167
172
|
config = LettaConfig.load()
|
|
168
173
|
|
|
174
|
+
|
|
175
|
+
def print_sqlite_schema_error():
|
|
176
|
+
"""Print a formatted error message for SQLite schema issues"""
|
|
177
|
+
console = Console()
|
|
178
|
+
error_text = Text()
|
|
179
|
+
error_text.append("Existing SQLite DB schema is invalid, and schema migrations are not supported for SQLite. ", style="bold red")
|
|
180
|
+
error_text.append("To have migrations supported between Letta versions, please run Letta with Docker (", style="white")
|
|
181
|
+
error_text.append("https://docs.letta.com/server/docker", style="blue underline")
|
|
182
|
+
error_text.append(") or use Postgres by setting ", style="white")
|
|
183
|
+
error_text.append("LETTA_PG_URI", style="yellow")
|
|
184
|
+
error_text.append(".\n\n", style="white")
|
|
185
|
+
error_text.append("If you wish to keep using SQLite, you can reset your database by removing the DB file with ", style="white")
|
|
186
|
+
error_text.append("rm ~/.letta/sqlite.db", style="yellow")
|
|
187
|
+
error_text.append(" or downgrade to your previous version of Letta.", style="white")
|
|
188
|
+
|
|
189
|
+
console.print(Panel(error_text, border_style="red"))
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
@contextmanager
|
|
193
|
+
def db_error_handler():
|
|
194
|
+
"""Context manager for handling database errors"""
|
|
195
|
+
try:
|
|
196
|
+
yield
|
|
197
|
+
except Exception as e:
|
|
198
|
+
# Handle other SQLAlchemy errors
|
|
199
|
+
print(e)
|
|
200
|
+
print_sqlite_schema_error()
|
|
201
|
+
# raise ValueError(f"SQLite DB error: {str(e)}")
|
|
202
|
+
exit(1)
|
|
203
|
+
|
|
204
|
+
|
|
169
205
|
if settings.letta_pg_uri_no_default:
|
|
170
206
|
config.recall_storage_type = "postgres"
|
|
171
207
|
config.recall_storage_uri = settings.letta_pg_uri_no_default
|
|
@@ -178,6 +214,30 @@ else:
|
|
|
178
214
|
# TODO: don't rely on config storage
|
|
179
215
|
engine = create_engine("sqlite:///" + os.path.join(config.recall_storage_path, "sqlite.db"))
|
|
180
216
|
|
|
217
|
+
# Store the original connect method
|
|
218
|
+
original_connect = engine.connect
|
|
219
|
+
|
|
220
|
+
def wrapped_connect(*args, **kwargs):
|
|
221
|
+
with db_error_handler():
|
|
222
|
+
# Get the connection
|
|
223
|
+
connection = original_connect(*args, **kwargs)
|
|
224
|
+
|
|
225
|
+
# Store the original execution method
|
|
226
|
+
original_execute = connection.execute
|
|
227
|
+
|
|
228
|
+
# Wrap the execute method of the connection
|
|
229
|
+
def wrapped_execute(*args, **kwargs):
|
|
230
|
+
with db_error_handler():
|
|
231
|
+
return original_execute(*args, **kwargs)
|
|
232
|
+
|
|
233
|
+
# Replace the connection's execute method
|
|
234
|
+
connection.execute = wrapped_execute
|
|
235
|
+
|
|
236
|
+
return connection
|
|
237
|
+
|
|
238
|
+
# Replace the engine's connect method
|
|
239
|
+
engine.connect = wrapped_connect
|
|
240
|
+
|
|
181
241
|
Base.metadata.create_all(bind=engine)
|
|
182
242
|
|
|
183
243
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
|
@@ -379,7 +439,9 @@ class SyncServer(Server):
|
|
|
379
439
|
if agent_state.agent_type == AgentType.memgpt_agent:
|
|
380
440
|
agent = Agent(agent_state=agent_state, interface=interface, user=actor, initial_message_sequence=initial_message_sequence)
|
|
381
441
|
elif agent_state.agent_type == AgentType.offline_memory_agent:
|
|
382
|
-
agent = OfflineMemoryAgent(
|
|
442
|
+
agent = OfflineMemoryAgent(
|
|
443
|
+
agent_state=agent_state, interface=interface, user=actor, initial_message_sequence=initial_message_sequence
|
|
444
|
+
)
|
|
383
445
|
else:
|
|
384
446
|
assert initial_message_sequence is None, f"Initial message sequence is not supported for O1Agents"
|
|
385
447
|
agent = O1Agent(agent_state=agent_state, interface=interface, user=actor)
|
|
@@ -500,8 +562,8 @@ class SyncServer(Server):
|
|
|
500
562
|
letta_agent.attach_source(
|
|
501
563
|
user=self.user_manager.get_user_by_id(user_id=user_id),
|
|
502
564
|
source_id=data_source,
|
|
503
|
-
source_manager=letta_agent.source_manager,
|
|
504
|
-
ms=self.ms
|
|
565
|
+
source_manager=letta_agent.source_manager,
|
|
566
|
+
ms=self.ms,
|
|
505
567
|
)
|
|
506
568
|
|
|
507
569
|
elif command.lower() == "dump" or command.lower().startswith("dump "):
|
|
@@ -1267,7 +1329,10 @@ class SyncServer(Server):
|
|
|
1267
1329
|
|
|
1268
1330
|
# iterate over records
|
|
1269
1331
|
records = letta_agent.passage_manager.list_passages(
|
|
1270
|
-
actor=self.default_user,
|
|
1332
|
+
actor=self.default_user,
|
|
1333
|
+
agent_id=agent_id,
|
|
1334
|
+
cursor=cursor,
|
|
1335
|
+
limit=limit,
|
|
1271
1336
|
)
|
|
1272
1337
|
return records
|
|
1273
1338
|
|
|
@@ -1914,7 +1979,7 @@ class SyncServer(Server):
|
|
|
1914
1979
|
date=get_utc_time(),
|
|
1915
1980
|
status="error",
|
|
1916
1981
|
function_return=error_msg,
|
|
1917
|
-
stdout=[
|
|
1982
|
+
stdout=[""],
|
|
1918
1983
|
stderr=[traceback.format_exc()],
|
|
1919
1984
|
)
|
|
1920
1985
|
|