letta-nightly 0.6.3.dev20241211050151__tar.gz → 0.6.3.dev20241212015858__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.

Files changed (240) hide show
  1. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/PKG-INFO +26 -14
  2. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/README.md +25 -13
  3. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/agent.py +0 -1
  4. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/data_sources/connectors.py +4 -75
  5. letta_nightly-0.6.3.dev20241212015858/letta/memory.py +89 -0
  6. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/message.py +3 -3
  7. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/server.py +13 -12
  8. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/settings.py +3 -3
  9. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/pyproject.toml +1 -1
  10. letta_nightly-0.6.3.dev20241211050151/letta/agent_store/db.py +0 -467
  11. letta_nightly-0.6.3.dev20241211050151/letta/agent_store/milvus.py +0 -198
  12. letta_nightly-0.6.3.dev20241211050151/letta/agent_store/qdrant.py +0 -201
  13. letta_nightly-0.6.3.dev20241211050151/letta/agent_store/storage.py +0 -186
  14. letta_nightly-0.6.3.dev20241211050151/letta/memory.py +0 -366
  15. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/LICENSE +0 -0
  16. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/__init__.py +0 -0
  17. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/__main__.py +0 -0
  18. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/benchmark/benchmark.py +0 -0
  19. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/benchmark/constants.py +0 -0
  20. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/chat_only_agent.py +0 -0
  21. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/cli/cli.py +0 -0
  22. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/cli/cli_config.py +0 -0
  23. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/cli/cli_load.py +0 -0
  24. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/client/__init__.py +0 -0
  25. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/client/client.py +0 -0
  26. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/client/streaming.py +0 -0
  27. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/client/utils.py +0 -0
  28. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/config.py +0 -0
  29. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/constants.py +0 -0
  30. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/credentials.py +0 -0
  31. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/data_sources/connectors_helper.py +0 -0
  32. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/embeddings.py +0 -0
  33. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/errors.py +0 -0
  34. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/functions/__init__.py +0 -0
  35. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/functions/function_sets/base.py +0 -0
  36. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/functions/function_sets/extras.py +0 -0
  37. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/functions/functions.py +0 -0
  38. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/functions/helpers.py +0 -0
  39. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/functions/schema_generator.py +0 -0
  40. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/helpers/__init__.py +0 -0
  41. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/helpers/tool_rule_solver.py +0 -0
  42. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/humans/__init__.py +0 -0
  43. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/humans/examples/basic.txt +0 -0
  44. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/humans/examples/cs_phd.txt +0 -0
  45. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/interface.py +0 -0
  46. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/llm_api/__init__.py +0 -0
  47. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/llm_api/anthropic.py +0 -0
  48. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/llm_api/azure_openai.py +0 -0
  49. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/llm_api/azure_openai_constants.py +0 -0
  50. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/llm_api/cohere.py +0 -0
  51. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/llm_api/google_ai.py +0 -0
  52. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/llm_api/helpers.py +0 -0
  53. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/llm_api/llm_api_tools.py +0 -0
  54. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/llm_api/mistral.py +0 -0
  55. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/llm_api/openai.py +0 -0
  56. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/README.md +0 -0
  57. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/__init__.py +0 -0
  58. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/chat_completion_proxy.py +0 -0
  59. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/constants.py +0 -0
  60. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/function_parser.py +0 -0
  61. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/grammars/__init__.py +0 -0
  62. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/grammars/gbnf_grammar_generator.py +0 -0
  63. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/grammars/json.gbnf +0 -0
  64. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/grammars/json_func_calls_with_inner_thoughts.gbnf +0 -0
  65. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/json_parser.py +0 -0
  66. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/koboldcpp/api.py +0 -0
  67. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/koboldcpp/settings.py +0 -0
  68. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llamacpp/api.py +0 -0
  69. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llamacpp/settings.py +0 -0
  70. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llm_chat_completion_wrappers/__init__.py +0 -0
  71. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llm_chat_completion_wrappers/airoboros.py +0 -0
  72. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llm_chat_completion_wrappers/chatml.py +0 -0
  73. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py +0 -0
  74. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llm_chat_completion_wrappers/dolphin.py +0 -0
  75. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llm_chat_completion_wrappers/llama3.py +0 -0
  76. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llm_chat_completion_wrappers/simple_summary_wrapper.py +0 -0
  77. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llm_chat_completion_wrappers/wrapper_base.py +0 -0
  78. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/llm_chat_completion_wrappers/zephyr.py +0 -0
  79. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/lmstudio/api.py +0 -0
  80. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/lmstudio/settings.py +0 -0
  81. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/ollama/api.py +0 -0
  82. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/ollama/settings.py +0 -0
  83. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/settings/__init__.py +0 -0
  84. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/settings/deterministic_mirostat.py +0 -0
  85. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/settings/settings.py +0 -0
  86. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/settings/simple.py +0 -0
  87. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/utils.py +0 -0
  88. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/vllm/api.py +0 -0
  89. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/webui/api.py +0 -0
  90. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/webui/legacy_api.py +0 -0
  91. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/webui/legacy_settings.py +0 -0
  92. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/local_llm/webui/settings.py +0 -0
  93. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/log.py +0 -0
  94. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/main.py +0 -0
  95. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/metadata.py +0 -0
  96. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/o1_agent.py +0 -0
  97. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/offline_memory_agent.py +0 -0
  98. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/openai_backcompat/__init__.py +0 -0
  99. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/openai_backcompat/openai_object.py +0 -0
  100. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/__all__.py +0 -0
  101. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/__init__.py +0 -0
  102. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/agents_tags.py +0 -0
  103. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/base.py +0 -0
  104. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/block.py +0 -0
  105. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/blocks_agents.py +0 -0
  106. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/enums.py +0 -0
  107. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/errors.py +0 -0
  108. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/file.py +0 -0
  109. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/job.py +0 -0
  110. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/message.py +0 -0
  111. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/mixins.py +0 -0
  112. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/organization.py +0 -0
  113. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/passage.py +0 -0
  114. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/sandbox_config.py +0 -0
  115. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/source.py +0 -0
  116. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/sqlalchemy_base.py +0 -0
  117. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/sqlite_functions.py +0 -0
  118. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/tool.py +0 -0
  119. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/tools_agents.py +0 -0
  120. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/orm/user.py +0 -0
  121. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/__init__.py +0 -0
  122. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/examples/anna_pa.txt +0 -0
  123. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/examples/google_search_persona.txt +0 -0
  124. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/examples/memgpt_doc.txt +0 -0
  125. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/examples/memgpt_starter.txt +0 -0
  126. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/examples/o1_persona.txt +0 -0
  127. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/examples/offline_memory_persona.txt +0 -0
  128. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/examples/sam.txt +0 -0
  129. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/examples/sam_pov.txt +0 -0
  130. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/examples/sam_simple_pov_gpt35.txt +0 -0
  131. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/personas/examples/sqldb/test.db +0 -0
  132. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/__init__.py +0 -0
  133. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/gpt_summarize.py +0 -0
  134. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/gpt_system.py +0 -0
  135. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_base.txt +0 -0
  136. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_chat.txt +0 -0
  137. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_chat_compressed.txt +0 -0
  138. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_chat_fstring.txt +0 -0
  139. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_convo_only.txt +0 -0
  140. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_doc.txt +0 -0
  141. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_gpt35_extralong.txt +0 -0
  142. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_intuitive_knowledge.txt +0 -0
  143. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_modified_chat.txt +0 -0
  144. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_modified_o1.txt +0 -0
  145. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_offline_memory.txt +0 -0
  146. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/prompts/system/memgpt_offline_memory_chat.txt +0 -0
  147. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/providers.py +0 -0
  148. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/pytest.ini +0 -0
  149. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/agent.py +0 -0
  150. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/agents_tags.py +0 -0
  151. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/api_key.py +0 -0
  152. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/block.py +0 -0
  153. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/blocks_agents.py +0 -0
  154. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/embedding_config.py +0 -0
  155. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/enums.py +0 -0
  156. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/file.py +0 -0
  157. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/health.py +0 -0
  158. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/job.py +0 -0
  159. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/letta_base.py +0 -0
  160. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/letta_message.py +0 -0
  161. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/letta_request.py +0 -0
  162. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/letta_response.py +0 -0
  163. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/llm_config.py +0 -0
  164. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/memory.py +0 -0
  165. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/openai/chat_completion_request.py +0 -0
  166. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/openai/chat_completion_response.py +0 -0
  167. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/openai/chat_completions.py +0 -0
  168. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/openai/embedding_response.py +0 -0
  169. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/openai/openai.py +0 -0
  170. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/organization.py +0 -0
  171. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/passage.py +0 -0
  172. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/sandbox_config.py +0 -0
  173. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/source.py +0 -0
  174. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/tool.py +0 -0
  175. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/tool_rule.py +0 -0
  176. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/tools_agents.py +0 -0
  177. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/usage.py +0 -0
  178. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/schemas/user.py +0 -0
  179. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/__init__.py +0 -0
  180. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/constants.py +0 -0
  181. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/generate_openapi_schema.sh +0 -0
  182. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/__init__.py +0 -0
  183. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/app.py +0 -0
  184. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/auth/__init__.py +0 -0
  185. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/auth/index.py +0 -0
  186. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/auth_token.py +0 -0
  187. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/interface.py +0 -0
  188. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/__init__.py +0 -0
  189. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/openai/__init__.py +0 -0
  190. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/openai/assistants/__init__.py +0 -0
  191. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/openai/assistants/assistants.py +0 -0
  192. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/openai/assistants/schemas.py +0 -0
  193. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/openai/assistants/threads.py +0 -0
  194. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/openai/chat_completions/__init__.py +0 -0
  195. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +0 -0
  196. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/__init__.py +0 -0
  197. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/agents.py +0 -0
  198. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/blocks.py +0 -0
  199. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/health.py +0 -0
  200. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/jobs.py +0 -0
  201. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/llms.py +0 -0
  202. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/organizations.py +0 -0
  203. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/sandbox_configs.py +0 -0
  204. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/sources.py +0 -0
  205. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/tools.py +0 -0
  206. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/routers/v1/users.py +0 -0
  207. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/static_files.py +0 -0
  208. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/rest_api/utils.py +0 -0
  209. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/startup.sh +0 -0
  210. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/static_files/assets/index-048c9598.js +0 -0
  211. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/static_files/assets/index-0e31b727.css +0 -0
  212. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/static_files/favicon.ico +0 -0
  213. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/static_files/index.html +0 -0
  214. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/static_files/memgpt_logo_transparent.png +0 -0
  215. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/utils.py +0 -0
  216. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/ws_api/__init__.py +0 -0
  217. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/ws_api/example_client.py +0 -0
  218. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/ws_api/interface.py +0 -0
  219. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/ws_api/protocol.py +0 -0
  220. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/server/ws_api/server.py +0 -0
  221. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/__init__.py +0 -0
  222. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/agents_tags_manager.py +0 -0
  223. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/block_manager.py +0 -0
  224. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/blocks_agents_manager.py +0 -0
  225. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/job_manager.py +0 -0
  226. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/message_manager.py +0 -0
  227. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/organization_manager.py +0 -0
  228. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/passage_manager.py +0 -0
  229. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/per_agent_lock_manager.py +0 -0
  230. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/sandbox_config_manager.py +0 -0
  231. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/source_manager.py +0 -0
  232. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/tool_execution_sandbox.py +0 -0
  233. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/tool_manager.py +0 -0
  234. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/tool_sandbox_env/.gitkeep +0 -0
  235. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/tools_agents_manager.py +0 -0
  236. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/services/user_manager.py +0 -0
  237. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/streaming_interface.py +0 -0
  238. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/streaming_utils.py +0 -0
  239. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/letta/system.py +0 -0
  240. {letta_nightly-0.6.3.dev20241211050151 → letta_nightly-0.6.3.dev20241212015858}/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.dev20241211050151
3
+ Version: 0.6.3.dev20241212015858
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 guide [below](#-quickstart-pip))._
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="Letta logo" src="assets/example_ade_screenshot.png" width="800">
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 guide [below](#-quickstart-pip))._
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="Letta logo" src="assets/example_ade_screenshot.png" width="800">
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`.
@@ -8,7 +8,6 @@ from typing import List, Literal, Optional, Tuple, Union
8
8
 
9
9
  from tqdm import tqdm
10
10
 
11
- from letta.agent_store.storage import StorageConnector
12
11
  from letta.constants import (
13
12
  BASE_TOOLS,
14
13
  CLI_WARNING_PREFIX,
@@ -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, passage_store: StorageConnector, source_manager: SourceManager, actor: "User", agent_id: Optional[str] = None):
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
- passage_store.insert_many(passages)
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
- passage_store.insert_many(passages)
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
@@ -4,7 +4,7 @@ import warnings
4
4
  from datetime import datetime, timezone
5
5
  from typing import List, Literal, Optional
6
6
 
7
- from pydantic import Field, field_validator
7
+ from pydantic import BaseModel, Field, field_validator
8
8
 
9
9
  from letta.constants import (
10
10
  DEFAULT_MESSAGE_TOOL,
@@ -54,7 +54,7 @@ class BaseMessage(OrmMetadataBase):
54
54
  __id_prefix__ = "message"
55
55
 
56
56
 
57
- class MessageCreate(BaseMessage):
57
+ class MessageCreate(BaseModel):
58
58
  """Request to create a message"""
59
59
 
60
60
  # In the simplified format, only allow simple roles
@@ -66,7 +66,7 @@ class MessageCreate(BaseMessage):
66
66
  name: Optional[str] = Field(None, description="The name of the participant.")
67
67
 
68
68
 
69
- class MessageUpdate(BaseMessage):
69
+ class MessageUpdate(BaseModel):
70
70
  """Request to update a message"""
71
71
 
72
72
  role: Optional[MessageRole] = Field(None, description="The role of the participant.")
@@ -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
- passage_store = StorageConnector.get_storage_connector(TableType.PASSAGES, self.config, user_id=actor.id)
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(connector, source, passage_store, self.source_manager, actor=user, agent_id=agent_id)
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
- passage_conn = StorageConnector.get_storage_connector(TableType.PASSAGES, self.config, user_id=actor.id)
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
- llm_models.extend(provider.list_llm_models())
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
- embedding_models.extend(provider.list_embedding_models())
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:
@@ -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
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "letta-nightly"
3
- version = "0.6.3.dev20241211050151"
3
+ version = "0.6.3.dev20241212015858"
4
4
  packages = [
5
5
  {include = "letta"}
6
6
  ]