letta-nightly 0.4.1.dev20241008104105__py3-none-any.whl → 0.4.1.dev20241009104130__py3-none-any.whl

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 (32) hide show
  1. letta/agent.py +18 -2
  2. letta/client/client.py +8 -1
  3. letta/credentials.py +2 -2
  4. letta/functions/schema_generator.py +1 -1
  5. letta/llm_api/anthropic.py +3 -24
  6. letta/llm_api/azure_openai.py +47 -98
  7. letta/llm_api/azure_openai_constants.py +10 -0
  8. letta/llm_api/google_ai.py +39 -64
  9. letta/llm_api/helpers.py +57 -2
  10. letta/llm_api/llm_api_tools.py +4 -3
  11. letta/llm_api/openai.py +5 -49
  12. letta/main.py +1 -1
  13. letta/metadata.py +2 -0
  14. letta/providers.py +139 -30
  15. letta/schemas/agent.py +14 -0
  16. letta/schemas/llm_config.py +0 -3
  17. letta/schemas/openai/chat_completion_response.py +3 -0
  18. letta/schemas/tool.py +3 -3
  19. letta/server/rest_api/routers/openai/assistants/threads.py +5 -5
  20. letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +2 -2
  21. letta/server/rest_api/routers/v1/agents.py +11 -11
  22. letta/server/rest_api/routers/v1/blocks.py +2 -2
  23. letta/server/rest_api/routers/v1/jobs.py +2 -2
  24. letta/server/rest_api/routers/v1/sources.py +12 -12
  25. letta/server/rest_api/routers/v1/tools.py +6 -6
  26. letta/server/server.py +18 -5
  27. letta/settings.py +3 -112
  28. {letta_nightly-0.4.1.dev20241008104105.dist-info → letta_nightly-0.4.1.dev20241009104130.dist-info}/METADATA +1 -1
  29. {letta_nightly-0.4.1.dev20241008104105.dist-info → letta_nightly-0.4.1.dev20241009104130.dist-info}/RECORD +32 -31
  30. {letta_nightly-0.4.1.dev20241008104105.dist-info → letta_nightly-0.4.1.dev20241009104130.dist-info}/LICENSE +0 -0
  31. {letta_nightly-0.4.1.dev20241008104105.dist-info → letta_nightly-0.4.1.dev20241009104130.dist-info}/WHEEL +0 -0
  32. {letta_nightly-0.4.1.dev20241008104105.dist-info → letta_nightly-0.4.1.dev20241009104130.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  import os
2
2
  import tempfile
3
- from typing import List
3
+ from typing import List, Optional
4
4
 
5
5
  from fastapi import APIRouter, BackgroundTasks, Depends, Header, Query, UploadFile
6
6
 
@@ -21,7 +21,7 @@ router = APIRouter(prefix="/sources", tags=["sources"])
21
21
  def get_source(
22
22
  source_id: str,
23
23
  server: "SyncServer" = Depends(get_letta_server),
24
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
24
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
25
25
  ):
26
26
  """
27
27
  Get all sources
@@ -35,7 +35,7 @@ def get_source(
35
35
  def get_source_id_by_name(
36
36
  source_name: str,
37
37
  server: "SyncServer" = Depends(get_letta_server),
38
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
38
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
39
39
  ):
40
40
  """
41
41
  Get a source by name
@@ -49,7 +49,7 @@ def get_source_id_by_name(
49
49
  @router.get("/", response_model=List[Source], operation_id="list_sources")
50
50
  def list_sources(
51
51
  server: "SyncServer" = Depends(get_letta_server),
52
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
52
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
53
53
  ):
54
54
  """
55
55
  List all data sources created by a user.
@@ -63,7 +63,7 @@ def list_sources(
63
63
  def create_source(
64
64
  source: SourceCreate,
65
65
  server: "SyncServer" = Depends(get_letta_server),
66
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
66
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
67
67
  ):
68
68
  """
69
69
  Create a new data source.
@@ -78,7 +78,7 @@ def update_source(
78
78
  source_id: str,
79
79
  source: SourceUpdate,
80
80
  server: "SyncServer" = Depends(get_letta_server),
81
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
81
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
82
82
  ):
83
83
  """
84
84
  Update the name or documentation of an existing data source.
@@ -94,7 +94,7 @@ def update_source(
94
94
  def delete_source(
95
95
  source_id: str,
96
96
  server: "SyncServer" = Depends(get_letta_server),
97
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
97
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
98
98
  ):
99
99
  """
100
100
  Delete a data source.
@@ -109,7 +109,7 @@ def attach_source_to_agent(
109
109
  source_id: str,
110
110
  agent_id: str = Query(..., description="The unique identifier of the agent to attach the source to."),
111
111
  server: "SyncServer" = Depends(get_letta_server),
112
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
112
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
113
113
  ):
114
114
  """
115
115
  Attach a data source to an existing agent.
@@ -127,7 +127,7 @@ def detach_source_from_agent(
127
127
  source_id: str,
128
128
  agent_id: str = Query(..., description="The unique identifier of the agent to detach the source from."),
129
129
  server: "SyncServer" = Depends(get_letta_server),
130
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
130
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
131
131
  ) -> None:
132
132
  """
133
133
  Detach a data source from an existing agent.
@@ -143,7 +143,7 @@ def upload_file_to_source(
143
143
  source_id: str,
144
144
  background_tasks: BackgroundTasks,
145
145
  server: "SyncServer" = Depends(get_letta_server),
146
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
146
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
147
147
  ):
148
148
  """
149
149
  Upload a file to a data source.
@@ -176,7 +176,7 @@ def upload_file_to_source(
176
176
  def list_passages(
177
177
  source_id: str,
178
178
  server: SyncServer = Depends(get_letta_server),
179
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
179
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
180
180
  ):
181
181
  """
182
182
  List all passages associated with a data source.
@@ -190,7 +190,7 @@ def list_passages(
190
190
  def list_documents(
191
191
  source_id: str,
192
192
  server: "SyncServer" = Depends(get_letta_server),
193
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
193
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
194
194
  ):
195
195
  """
196
196
  List all documents associated with a data source.
@@ -1,4 +1,4 @@
1
- from typing import List
1
+ from typing import List, Optional
2
2
 
3
3
  from fastapi import APIRouter, Body, Depends, Header, HTTPException
4
4
 
@@ -13,7 +13,7 @@ router = APIRouter(prefix="/tools", tags=["tools"])
13
13
  def delete_tool(
14
14
  tool_id: str,
15
15
  server: SyncServer = Depends(get_letta_server),
16
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
16
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
17
17
  ):
18
18
  """
19
19
  Delete a tool by name
@@ -43,7 +43,7 @@ def get_tool(
43
43
  def get_tool_id(
44
44
  tool_name: str,
45
45
  server: SyncServer = Depends(get_letta_server),
46
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
46
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
47
47
  ):
48
48
  """
49
49
  Get a tool ID by name
@@ -60,7 +60,7 @@ def get_tool_id(
60
60
  @router.get("/", response_model=List[Tool], operation_id="list_tools")
61
61
  def list_all_tools(
62
62
  server: SyncServer = Depends(get_letta_server),
63
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
63
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
64
64
  ):
65
65
  """
66
66
  Get a list of all tools available to agents created by a user
@@ -78,7 +78,7 @@ def create_tool(
78
78
  tool: ToolCreate = Body(...),
79
79
  update: bool = False,
80
80
  server: SyncServer = Depends(get_letta_server),
81
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
81
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
82
82
  ):
83
83
  """
84
84
  Create a new tool
@@ -98,7 +98,7 @@ def update_tool(
98
98
  tool_id: str,
99
99
  request: ToolUpdate = Body(...),
100
100
  server: SyncServer = Depends(get_letta_server),
101
- user_id: str = Header(None), # Extract user_id from header, default to None if not present
101
+ user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present
102
102
  ):
103
103
  """
104
104
  Update an existing tool
letta/server/server.py CHANGED
@@ -51,7 +51,7 @@ from letta.providers import (
51
51
  OpenAIProvider,
52
52
  VLLMProvider,
53
53
  )
54
- from letta.schemas.agent import AgentState, CreateAgent, UpdateAgentState
54
+ from letta.schemas.agent import AgentState, AgentType, CreateAgent, UpdateAgentState
55
55
  from letta.schemas.api_key import APIKey, APIKeyCreate
56
56
  from letta.schemas.block import (
57
57
  Block,
@@ -272,7 +272,13 @@ class SyncServer(Server):
272
272
  if model_settings.gemini_api_key:
273
273
  self._enabled_providers.append(GoogleAIProvider(api_key=model_settings.gemini_api_key))
274
274
  if model_settings.azure_api_key and model_settings.azure_base_url:
275
- self._enabled_providers.append(AzureProvider(api_key=model_settings.azure_api_key, base_url=model_settings.azure_base_url))
275
+ self._enabled_providers.append(
276
+ AzureProvider(
277
+ api_key=model_settings.azure_api_key,
278
+ base_url=model_settings.azure_base_url,
279
+ api_version=model_settings.azure_api_version,
280
+ )
281
+ )
276
282
 
277
283
  def save_agents(self):
278
284
  """Saves all the agents that are in the in-memory object store"""
@@ -335,7 +341,10 @@ class SyncServer(Server):
335
341
  # Make sure the memory is a memory object
336
342
  assert isinstance(agent_state.memory, Memory)
337
343
 
338
- letta_agent = Agent(agent_state=agent_state, interface=interface, tools=tool_objs)
344
+ if agent_state.agent_type == AgentType.memgpt_agent:
345
+ letta_agent = Agent(agent_state=agent_state, interface=interface, tools=tool_objs)
346
+ else:
347
+ raise NotImplementedError("Only base agents are supported as of right now!")
339
348
 
340
349
  # Add the agent to the in-memory store and return its reference
341
350
  logger.debug(f"Adding agent to the agent cache: user_id={user_id}, agent_id={agent_id}")
@@ -599,7 +608,7 @@ class SyncServer(Server):
599
608
  )
600
609
 
601
610
  # Run the agent state forward
602
- usage = self._step(user_id=user_id, agent_id=agent_id, input_message=packaged_user_message, timestamp=timestamp)
611
+ usage = self._step(user_id=user_id, agent_id=agent_id, input_message=message, timestamp=timestamp)
603
612
  return usage
604
613
 
605
614
  def system_message(
@@ -787,6 +796,7 @@ class SyncServer(Server):
787
796
  name=request.name,
788
797
  user_id=user_id,
789
798
  tools=request.tools if request.tools else [],
799
+ agent_type=request.agent_type or AgentType.memgpt_agent,
790
800
  llm_config=llm_config,
791
801
  embedding_config=embedding_config,
792
802
  system=request.system,
@@ -1921,7 +1931,10 @@ class SyncServer(Server):
1921
1931
  if user_id is None:
1922
1932
  return self.get_default_user()
1923
1933
  else:
1924
- return self.get_user(user_id=user_id)
1934
+ try:
1935
+ return self.get_user(user_id=user_id)
1936
+ except ValueError:
1937
+ raise HTTPException(status_code=404, detail=f"User with id {user_id} not found")
1925
1938
 
1926
1939
  def list_llm_models(self) -> List[LLMConfig]:
1927
1940
  """List available models"""
letta/settings.py CHANGED
@@ -13,8 +13,8 @@ class ModelSettings(BaseSettings):
13
13
  openai_api_key: Optional[str] = None
14
14
  # TODO: provide overriding BASE_URL?
15
15
 
16
- # grok
17
- grok_api_key: Optional[str] = None
16
+ # groq
17
+ groq_api_key: Optional[str] = None
18
18
 
19
19
  # anthropic
20
20
  anthropic_api_key: Optional[str] = None
@@ -25,6 +25,7 @@ class ModelSettings(BaseSettings):
25
25
  # azure
26
26
  azure_api_key: Optional[str] = None
27
27
  azure_base_url: Optional[str] = None
28
+ azure_api_version: Optional[str] = None
28
29
 
29
30
  # google ai
30
31
  gemini_api_key: Optional[str] = None
@@ -55,116 +56,6 @@ class Settings(BaseSettings):
55
56
  pg_port: Optional[int] = None
56
57
  pg_uri: Optional[str] = None # option to specifiy full uri
57
58
 
58
- ## llm configuration
59
- # llm_endpoint: Optional[str] = None
60
- # llm_endpoint_type: Optional[str] = None
61
- # llm_model: Optional[str] = None
62
- # llm_context_window: Optional[int] = None
63
-
64
- ## embedding configuration
65
- # embedding_endpoint: Optional[str] = None
66
- # embedding_endpoint_type: Optional[str] = None
67
- # embedding_dim: Optional[int] = None
68
- # embedding_model: Optional[str] = None
69
- # embedding_chunk_size: int = 300
70
-
71
- # @property
72
- # def llm_config(self):
73
-
74
- # # try to get LLM config from settings
75
- # if self.llm_endpoint and self.llm_endpoint_type and self.llm_model and self.llm_context_window:
76
- # return LLMConfig(
77
- # model=self.llm_model,
78
- # model_endpoint_type=self.llm_endpoint_type,
79
- # model_endpoint=self.llm_endpoint,
80
- # model_wrapper=None,
81
- # context_window=self.llm_context_window,
82
- # )
83
- # else:
84
- # if not self.llm_endpoint:
85
- # printd(f"No LETTA_LLM_ENDPOINT provided")
86
- # if not self.llm_endpoint_type:
87
- # printd(f"No LETTA_LLM_ENDPOINT_TYPE provided")
88
- # if not self.llm_model:
89
- # printd(f"No LETTA_LLM_MODEL provided")
90
- # if not self.llm_context_window:
91
- # printd(f"No LETTA_LLM_CONTEX_WINDOW provided")
92
-
93
- # # quickstart options
94
- # if self.llm_model:
95
- # try:
96
- # return LLMConfig.default_config(self.llm_model)
97
- # except ValueError:
98
- # pass
99
-
100
- # # try to read from config file (last resort)
101
- # from letta.config import LettaConfig
102
-
103
- # if LettaConfig.exists():
104
- # config = LettaConfig.load()
105
- # llm_config = LLMConfig(
106
- # model=config.default_llm_config.model,
107
- # model_endpoint_type=config.default_llm_config.model_endpoint_type,
108
- # model_endpoint=config.default_llm_config.model_endpoint,
109
- # model_wrapper=config.default_llm_config.model_wrapper,
110
- # context_window=config.default_llm_config.context_window,
111
- # )
112
- # return llm_config
113
-
114
- # # check OpenAI API key
115
- # if os.getenv("OPENAI_API_KEY"):
116
- # return LLMConfig.default_config(self.llm_model if self.llm_model else "gpt-4")
117
-
118
- # return LLMConfig.default_config("letta")
119
-
120
- # @property
121
- # def embedding_config(self):
122
-
123
- # # try to get LLM config from settings
124
- # if self.embedding_endpoint and self.embedding_endpoint_type and self.embedding_model and self.embedding_dim:
125
- # return EmbeddingConfig(
126
- # embedding_model=self.embedding_model,
127
- # embedding_endpoint_type=self.embedding_endpoint_type,
128
- # embedding_endpoint=self.embedding_endpoint,
129
- # embedding_dim=self.embedding_dim,
130
- # embedding_chunk_size=self.embedding_chunk_size,
131
- # )
132
- # else:
133
- # if not self.embedding_endpoint:
134
- # printd(f"No LETTA_EMBEDDING_ENDPOINT provided")
135
- # if not self.embedding_endpoint_type:
136
- # printd(f"No LETTA_EMBEDDING_ENDPOINT_TYPE provided")
137
- # if not self.embedding_model:
138
- # printd(f"No LETTA_EMBEDDING_MODEL provided")
139
- # if not self.embedding_dim:
140
- # printd(f"No LETTA_EMBEDDING_DIM provided")
141
-
142
- # # TODO
143
- # ## quickstart options
144
- # # if self.embedding_model:
145
- # # try:
146
- # # return EmbeddingConfig.default_config(self.embedding_model)
147
- # # except ValueError as e:
148
- # # pass
149
-
150
- # # try to read from config file (last resort)
151
- # from letta.config import LettaConfig
152
-
153
- # if LettaConfig.exists():
154
- # config = LettaConfig.load()
155
- # return EmbeddingConfig(
156
- # embedding_model=config.default_embedding_config.embedding_model,
157
- # embedding_endpoint_type=config.default_embedding_config.embedding_endpoint_type,
158
- # embedding_endpoint=config.default_embedding_config.embedding_endpoint,
159
- # embedding_dim=config.default_embedding_config.embedding_dim,
160
- # embedding_chunk_size=config.default_embedding_config.embedding_chunk_size,
161
- # )
162
-
163
- # if os.getenv("OPENAI_API_KEY"):
164
- # return EmbeddingConfig.default_config(self.embedding_model if self.embedding_model else "text-embedding-ada-002")
165
-
166
- # return EmbeddingConfig.default_config("letta")
167
-
168
59
  @property
169
60
  def letta_pg_uri(self) -> str:
170
61
  if self.pg_uri:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.4.1.dev20241008104105
3
+ Version: 0.4.1.dev20241009104130
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -1,6 +1,6 @@
1
1
  letta/__init__.py,sha256=btKRPdyhkpIyHlCPRLwwz-SCSVcEGNBeheYA-XNesiI,996
2
2
  letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
3
- letta/agent.py,sha256=99tFQd0RNxMHsM1exZL1HeubWNEhtXzy0dST7X7LpIQ,65859
3
+ letta/agent.py,sha256=2yYk8H76EYF8-EF5eFqv8dp8avaBcV_hfXOQcwYuAwU,66559
4
4
  letta/agent_store/chroma.py,sha256=upR5zGnGs6I6btulEYbiZdGG87BgKjxUJOQZ4Y-RQ_M,12492
5
5
  letta/agent_store/db.py,sha256=uoWu4nfQ6YmT2WKTkNyV5mP25hxpZXAvQqans4JhnM4,21798
6
6
  letta/agent_store/lancedb.py,sha256=8RWmqVjowm5g0cc6DNRcb6f1FHGEqFnccnuekhWY39U,5101
@@ -14,7 +14,7 @@ letta/cli/cli_config.py,sha256=eY4D4SVJJghaatyrmsQw87sQ4NoozokEIeK0jfDJINY,58769
14
14
  letta/cli/cli_load.py,sha256=aVlGWiNEUs_eG793HLl7cES-dEIuA1CJfZpT1Cm8Uo4,4591
15
15
  letta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  letta/client/admin.py,sha256=itdH1dGL143Je5tkZl8dQ1PavjepClar3QasxpbX1cI,7397
17
- letta/client/client.py,sha256=1uKCChE9jdygCDKRb-GvhQqp8rtMB0_aGGBDanRBbq0,84186
17
+ letta/client/client.py,sha256=bPvSQrbym4xXZu9EfEbX02fpkNVxFBpKoyzK9PFwykE,84515
18
18
  letta/client/streaming.py,sha256=bfWlUu7z7EoPfKxBqIarYxGKyrL7Pj79BlliToqcCgI,4592
19
19
  letta/client/utils.py,sha256=NMFts6bFsHTV0yW3BRRo2HSqGr6Gr3tj1kNtkUCgMCA,2262
20
20
  letta/config.py,sha256=j2I90fOh9d9__kOYObwTDLbvVwYR50rIql5nzrvREKg,19161
@@ -22,7 +22,7 @@ letta/configs/anthropic.json,sha256=Buds8qZXR1f_vR1X9e2LxOHIEufAEWFjLovV0g0nbIU,
22
22
  letta/configs/letta_hosted.json,sha256=pMXFCjX2liBeBY1M2Wgu9GwEicN8tveO1VPoNHpWbRc,365
23
23
  letta/configs/openai.json,sha256=z0izsHi7vAj_kJrd3XNgxej61HjPIJobABbhvxL0d8g,373
24
24
  letta/constants.py,sha256=VV6T8O4w4ju8q5CrPCbvPwHlUTltkeFji-r7hz8LTIw,5930
25
- letta/credentials.py,sha256=MyJFOA5Egkd7v4ye6ZXSAcxVBlJxRMSn13e4ugqgdB0,5802
25
+ letta/credentials.py,sha256=D9mlcPsdDWlIIXQQD8wSPE9M_QvsRrb0p3LB5i9OF5Q,5806
26
26
  letta/data_sources/connectors.py,sha256=E2rJNqVT4WEvxBqOQl0YgNKa_JQXkG0h1luw_XLcTis,10232
27
27
  letta/embeddings.py,sha256=GPF9ILCQT7n71fxyMV8mRjXBSGfUwPLUE88h81UOc5I,8020
28
28
  letta/errors.py,sha256=cDOo4cSYL-LA0w0b0GdsxXd5k2I1LLOY8nhtXk9YqYs,2875
@@ -31,19 +31,20 @@ letta/functions/function_sets/base.py,sha256=N4QmOjL6gDEyOg67ocF6zVKM-NquTo-yXG_
31
31
  letta/functions/function_sets/extras.py,sha256=Jik3UiDqYTm4Lam1XPTvuVjvgUHwIAhopsnbmVhGMBg,4732
32
32
  letta/functions/functions.py,sha256=OU98c-Rds9UCQ8CufzdrpzSZsQ0a02uDv_x5VqoNFfw,3381
33
33
  letta/functions/helpers.py,sha256=dzeQ1hsxI-20QcVzkS8y55aCJw3iGbtm4oqBobb_tIM,9876
34
- letta/functions/schema_generator.py,sha256=v3LXdA5UVQXqpBkURK2H5PZuZoLlpZygleG35T3vMBc,6488
34
+ letta/functions/schema_generator.py,sha256=dsVTr9SPyMISU2ZSm1ruStlYnYMnli12dCFuHRAEH1A,6488
35
35
  letta/humans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  letta/humans/examples/basic.txt,sha256=Lcp8YESTWvOJgO4Yf_yyQmgo5bKakeB1nIVrwEGG6PA,17
37
37
  letta/humans/examples/cs_phd.txt,sha256=9C9ZAV_VuG7GB31ksy3-_NAyk8rjE6YtVOkhp08k1xw,297
38
38
  letta/interface.py,sha256=HP4Yb-WUfuJ6w1WgV-DbM-QNhV02IHdUzHzCygrwdfk,12612
39
39
  letta/llm_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- letta/llm_api/anthropic.py,sha256=nxMuLW7kIw6QLZW77M_fH7HSPV-ckFF50DVqvLRRFqg,13801
41
- letta/llm_api/azure_openai.py,sha256=bp6uzdeYQRKPVfXm_6RiSiMqG5XBFE9rUaI62eFGqI4,6703
40
+ letta/llm_api/anthropic.py,sha256=bAb9PVrpYjo2QN51_SJbW7Vry2_Sf55B05UoruHXb7A,12932
41
+ letta/llm_api/azure_openai.py,sha256=8uBQIYa3WpRcxLXgJTYZrl-GhDGflqxXraRLZlpkdh4,4566
42
+ letta/llm_api/azure_openai_constants.py,sha256=oXtKrgBFHf744gyt5l1thILXgyi8NDNUrKEa2GGGpjw,278
42
43
  letta/llm_api/cohere.py,sha256=vDRd-SUGp1t_JUIdwC3RkIhwMl0OY7n-tAU9uPORYkY,14826
43
- letta/llm_api/google_ai.py,sha256=Ksf4vlYoWRe5JtiPOqxaArDnjUbAS8fxX_zwgt-2buQ,19100
44
- letta/llm_api/helpers.py,sha256=bid0DwcPd9EQ-5ePDNSg4LC-dyXVv2tMIoWaCmC9PKU,6747
45
- letta/llm_api/llm_api_tools.py,sha256=De0haod6XEuejaddonsm5I1C544vYHVIkWEuqvIcVW8,15709
46
- letta/llm_api/openai.py,sha256=7roMrNMt7ieWY6OynKUk8xX4wWNE-BuYrOrcAON8M2Q,23458
44
+ letta/llm_api/google_ai.py,sha256=FhSGSMDXCdx9KiChYfBkG35U5pG40b-lL4hibf9ZAqk,17727
45
+ letta/llm_api/helpers.py,sha256=IVDiHvojUzappD7kgKY3TtMJ0edKu24Xw6wxbeIyOd4,9058
46
+ letta/llm_api/llm_api_tools.py,sha256=eYbwuyxEonI2tp6MHet2b0GcmF4Yh2V9kGopebtTb7I,15707
47
+ letta/llm_api/openai.py,sha256=SnZtVigiTPLMwgdP51XO3bdl6GAlKQb5wKIIPkLlUGM,21432
47
48
  letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
48
49
  letta/local_llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
50
  letta/local_llm/chat_completion_proxy.py,sha256=PXgNveahts5DbZ7GVcPShxmrDKropL81PY2JHc31yAA,13091
@@ -82,9 +83,9 @@ letta/local_llm/webui/legacy_api.py,sha256=k3H3y4qp2Fs-XmP24iSIEyvq6wjWFWBzklY3-
82
83
  letta/local_llm/webui/legacy_settings.py,sha256=BLmd3TSx5StnY3ibjwaxYATPt_Lvq-o1rlcc_-Q1JcU,538
83
84
  letta/local_llm/webui/settings.py,sha256=gmLHfiOl1u4JmlAZU2d2O8YKF9lafdakyjwR_ftVPh8,552
84
85
  letta/log.py,sha256=QHquDnL7oUAvdKlAwUlCK9zXKDMUjrU9WA0bxnMsP0Y,2101
85
- letta/main.py,sha256=szOwPfU6O8Lyy8kP5dtB385v8EWOKfo0fz0-ss-aT3Y,18495
86
+ letta/main.py,sha256=7uuiFv8TeOd3K92WwfYkls7l7KXJ5P0l2zgK9AfmD08,18502
86
87
  letta/memory.py,sha256=6q1x3-PY-PeXzAt6hvP-UF1ajvroPZ7XW-5nLy-JhMo,17657
87
- letta/metadata.py,sha256=gD67ZO2nhjcLbG2qUfALTo3SLac6I-c1iYpCGrGX7GE,33153
88
+ letta/metadata.py,sha256=-LUv7w5yaCn10wh7vnFCrhH4s5M5F0K3Ui7pClXN3tE,33225
88
89
  letta/openai_backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
90
  letta/openai_backcompat/openai_object.py,sha256=Y1ZS1sATP60qxJiOsjOP3NbwSzuzvkNAvb3DeuhM5Uk,13490
90
91
  letta/persistence_manager.py,sha256=LlLgEDpSafCPAiyKmuq0NvVAnfBkZo6TWbGIKYQjQBs,5200
@@ -108,9 +109,9 @@ letta/prompts/system/memgpt_doc.txt,sha256=AsT55NOORoH-K-p0fxklrDRZ3qHs4MIKMuR-M
108
109
  letta/prompts/system/memgpt_gpt35_extralong.txt,sha256=FheNhYoIzNz6qnJKhVquZVSMj3HduC48reFaX7Pf7ig,5046
109
110
  letta/prompts/system/memgpt_intuitive_knowledge.txt,sha256=sA7c3urYqREVnSBI81nTGImXAekqC0Fxc7RojFqud1g,2966
110
111
  letta/prompts/system/memgpt_modified_chat.txt,sha256=HOaPVurEftD8KsuwsclDgE2afIfklMjxhuSO96q1-6I,4656
111
- letta/providers.py,sha256=bHii9PDXe_rGD2OVTeG6Kbofl697XDSmHI9uNUXvbkk,7940
112
+ letta/providers.py,sha256=WeITSKYvd0ZflGnRDJlKs2fQtA3A_ZO-r44Qf0AQAYs,12853
112
113
  letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
- letta/schemas/agent.py,sha256=OUnKIKK2WRtXp5F9tGiaWL-h80Ep5LZFK0K85vulzr4,5856
114
+ letta/schemas/agent.py,sha256=ztnUqdhY9V3g0jsbTjF1ypKPC1tZx4QVFaRuLAOXNSA,6230
114
115
  letta/schemas/api_key.py,sha256=u07yzzMn-hBAHZIIKbWY16KsgiFjSNR8lAghpMUo3_4,682
115
116
  letta/schemas/block.py,sha256=1_GwFtfykloYU4Mp2DV3-DqkvsKo79Mu3LAzVYOgMzk,3998
116
117
  letta/schemas/document.py,sha256=JpvU0YkvOVLvHaDNcg-ihFzpeHC2zqsWBgyJ6zHnfNw,745
@@ -122,18 +123,18 @@ letta/schemas/letta_base.py,sha256=4QXFgyjCHqIagi8B6_4nmqb9eoJ52Y6aCxBxQpGX48M,2
122
123
  letta/schemas/letta_message.py,sha256=Slgxa59qZfdvqXuCVHOt03u-7JL456ZY-WLaK5UYYKU,6234
123
124
  letta/schemas/letta_request.py,sha256=Fv4hZKLMefCISwxuElXB0vsGDjqnzZuCbCbHPUPTirQ,1852
124
125
  letta/schemas/letta_response.py,sha256=_UJoO3UtC3F5DtQCHzdiGM1SHNPYPKvopIWqg8t5YZw,1564
125
- letta/schemas/llm_config.py,sha256=qL1WkQMXe4cj24j_I1N6eOhkmmPM7bwpboG60wAMFRg,2837
126
+ letta/schemas/llm_config.py,sha256=oC-RTimpLhNmn80AyCLnx8YUwA0sIR1UqshYxHVbamU,2671
126
127
  letta/schemas/memory.py,sha256=mDJbe9mzTw0HSn6tiouC3z32r-8Fc_EaeqxDy_hXf0U,9327
127
128
  letta/schemas/message.py,sha256=1C6lz4yvMTusE8zORKbi_BKnb_X_-RuUvdpM5YeZ21o,33409
128
129
  letta/schemas/openai/chat_completion_request.py,sha256=Fa7xnSnG7WUQounJhnDu0fTSxoR6xOAh2bODuqmfypI,3345
129
- letta/schemas/openai/chat_completion_response.py,sha256=9i-ckINar697u9kBYltd7Hs1JvF6DmQYuVgVXoTzAY4,3846
130
+ letta/schemas/openai/chat_completion_response.py,sha256=05FRfm1EsVivyeWo2aoJk34h3W4pAb4lBCPn1eujjcw,3916
130
131
  letta/schemas/openai/chat_completions.py,sha256=V0ZPIIk-ds3O6MAkNHMz8zh1hqMFSPrTcYr88WDYzWE,3588
131
132
  letta/schemas/openai/embedding_response.py,sha256=WKIZpXab1Av7v6sxKG8feW3ZtpQUNosmLVSuhXYa_xU,357
132
133
  letta/schemas/openai/openai.py,sha256=Hilo5BiLAGabzxCwnwfzK5QrWqwYD8epaEKFa4Pwndk,7970
133
134
  letta/schemas/organization.py,sha256=JSc3hLl0IO_c9iOqf367sU5tJ0Dx_kPzbokCEg0eS4g,601
134
135
  letta/schemas/passage.py,sha256=ZO8-WOToLgf-DzUkREp9MQF274SLYeZwnSoNo2sKPHc,3573
135
136
  letta/schemas/source.py,sha256=rAM3Xjt7zJ3JLXpUxWmdYIujns4ZuqGCsozmNAWX5kI,2570
136
- letta/schemas/tool.py,sha256=Xutv0JyoSmxgmUykQI_lYtn54bf85CG-2hZQs6TIbKc,8591
137
+ letta/schemas/tool.py,sha256=HpBxUJcSxP1V6xDcdByAbC3jMQ8lp6ozTxU7kFQY45A,8591
137
138
  letta/schemas/usage.py,sha256=lvn1ooHwLEdv6gwQpw5PBUbcwn_gwdT6HA-fCiix6sY,817
138
139
  letta/schemas/user.py,sha256=D7DiPzieXZIHOLInJdYZlHjKOy2bl7KxGCesNk0yf5E,1003
139
140
  letta/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -153,22 +154,22 @@ letta/server/rest_api/routers/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
153
154
  letta/server/rest_api/routers/openai/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
155
  letta/server/rest_api/routers/openai/assistants/assistants.py,sha256=PXv5vLFDa3ptMBY6QJUkMaPqk2HFP0IpirJUCmgOY6k,4828
155
156
  letta/server/rest_api/routers/openai/assistants/schemas.py,sha256=d3LdBLUI-mMUCP-Q3X9Z_DqIu-ko9_KLMt8og799aNg,5630
156
- letta/server/rest_api/routers/openai/assistants/threads.py,sha256=ZNUzIut9byUGyk1inn11MYwZgGpnQmmmmeZ3nWwrj4Y,13980
157
+ letta/server/rest_api/routers/openai/assistants/threads.py,sha256=1l0zGQWGXObfRtAmf9_FLnhhg775sd_5DG8C1wpj55c,14098
157
158
  letta/server/rest_api/routers/openai/chat_completions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
158
- letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=lyqrjTe1GLD8IRtq6kJJ5BEUwKBJ03op_Da-QtO5aEU,4881
159
+ letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=-uye6cm4SnoQGwxhr1N1FrSXOlnO2Hvbfj6k8JSc45k,4918
159
160
  letta/server/rest_api/routers/v1/__init__.py,sha256=sqlVZa-u9DJwdRsp0_8YUGrac9DHguIB4wETlEDRylA,666
160
- letta/server/rest_api/routers/v1/agents.py,sha256=erHdpdEUWF82UXRR4gIfTtKSq_ldOG9kCgIU9RPAkj8,22643
161
- letta/server/rest_api/routers/v1/blocks.py,sha256=qU8cwl1YVx2NE1-nidD2rwGAWWrMlBPzFxhV4N-SHJA,2529
161
+ letta/server/rest_api/routers/v1/agents.py,sha256=B0BW0B2XRiVBCk47q57_Cw4JzDzqvL-moUCV2A3D5vM,22940
162
+ letta/server/rest_api/routers/v1/blocks.py,sha256=0WekE_yBD2U3jYgPxI0DCFjACWavCAlvm_Ybw5SZBnw,2583
162
163
  letta/server/rest_api/routers/v1/health.py,sha256=pKCuVESlVOhGIb4VC4K-H82eZqfghmT6kvj2iOkkKuc,401
163
- letta/server/rest_api/routers/v1/jobs.py,sha256=wVI-Ukzpxv-h9ppEYZUARX6vJxl4rhuJRXzKrUP6Kkw,1810
164
+ letta/server/rest_api/routers/v1/jobs.py,sha256=tYm7XECz2TLpN9eIM61xEPcckYV6td4NRkWJJtdojRY,1864
164
165
  letta/server/rest_api/routers/v1/llms.py,sha256=TcyvSx6MEM3je5F4DysL7ligmssL_pFlJaaO4uL95VY,877
165
166
  letta/server/rest_api/routers/v1/organizations.py,sha256=i3S9E1hu2Zj9g0pRv6wnQhz1VJ_RMIHCrGzgwY-Wj3Y,1945
166
- letta/server/rest_api/routers/v1/sources.py,sha256=pwL8NIs6Gvzgx4rT77FlTxiQVZLeBxIsCs1lWUrlBiQ,7535
167
- letta/server/rest_api/routers/v1/tools.py,sha256=ArJKQYfKhiwnYwdi4gtLJjT6jICpXxxx65RnmoykjPo,3317
167
+ letta/server/rest_api/routers/v1/sources.py,sha256=Jbj4Wc1e6EQrdWi07kPw-TgN-aOmOZ1h224hG2HhY2E,7842
168
+ letta/server/rest_api/routers/v1/tools.py,sha256=MEhxu-zMS2ff_wwcRpMuQyWA71w_3BJbNYzesqlG2cU,3462
168
169
  letta/server/rest_api/routers/v1/users.py,sha256=Y2rDvHOG1B5FLSOjutY3R22vt48IngbZ-9h8CohG5rc,3378
169
170
  letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
170
171
  letta/server/rest_api/utils.py,sha256=Fc2ZGKzLaBa2sEtSTVjJ8D5M0xIwsWC0CVAOIJaD3rY,2176
171
- letta/server/server.py,sha256=43yRavXBbKn7FitWutRW26OOcN921K9HXgb-dAHtbjQ,81206
172
+ letta/server/server.py,sha256=XDLUNldg3C7rbXIiz9stD1SWrsoqdYyXX3s2v-1Smg8,81760
172
173
  letta/server/startup.sh,sha256=jeGV7B_PS0hS-tT6o6GpACrUbV9WV1NI2L9aLoUDDtc,311
173
174
  letta/server/static_files/assets/index-3ab03d5b.css,sha256=OrA9W4iKJ5h2Wlr7GwdAT4wow0CM8hVit1yOxEL49Qw,54295
174
175
  letta/server/static_files/assets/index-9a9c449b.js,sha256=qoWUq6_kuLhE9NFkNeCBptgq-oERW46r0tB3JlWe_qc,1818951
@@ -181,12 +182,12 @@ letta/server/ws_api/example_client.py,sha256=95AA5UFgTlNJ0FUQkLxli8dKNx48MNm3eWG
181
182
  letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRoMa4,4120
182
183
  letta/server/ws_api/protocol.py,sha256=M_-gM5iuDBwa1cuN2IGNCG5GxMJwU2d3XW93XALv9s8,1821
183
184
  letta/server/ws_api/server.py,sha256=C2Kv48PCwl46DQFb0ZP30s86KJLQ6dZk2AhWQEZn9pY,6004
184
- letta/settings.py,sha256=6NpawXwtg4kn1FrO4mFr6IQbISAnz1fJd0kncZtjjt4,7186
185
+ letta/settings.py,sha256=a1dN-ntNXM46IuF-ITG9u881aLdESfNGWl8_uBYSH20,2677
185
186
  letta/streaming_interface.py,sha256=LPY1NmXtptcjdHrfVOOKL4-v3AyUD8SIyQMt1Dypd1A,15532
186
187
  letta/system.py,sha256=buKYPqG5n2x41hVmWpu6JUpyd7vTWED9Km2_M7dLrvk,6960
187
188
  letta/utils.py,sha256=neUs7mxNfndzRL5XUxerr8Lic6w7qnyyvf8FBwMnyWw,30852
188
- letta_nightly-0.4.1.dev20241008104105.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
189
- letta_nightly-0.4.1.dev20241008104105.dist-info/METADATA,sha256=R2R_DFrgp-fcd8WLaMIZ0UJt8f_Yz6aYil9zXfarooI,5967
190
- letta_nightly-0.4.1.dev20241008104105.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
191
- letta_nightly-0.4.1.dev20241008104105.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
192
- letta_nightly-0.4.1.dev20241008104105.dist-info/RECORD,,
189
+ letta_nightly-0.4.1.dev20241009104130.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
190
+ letta_nightly-0.4.1.dev20241009104130.dist-info/METADATA,sha256=vAw9HINxzaPb70V6E0C6uWSv5IsLswMToTb08xT9ZVQ,5967
191
+ letta_nightly-0.4.1.dev20241009104130.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
192
+ letta_nightly-0.4.1.dev20241009104130.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
193
+ letta_nightly-0.4.1.dev20241009104130.dist-info/RECORD,,