Skip to content

Commit d762343

Browse files
authored
Merge pull request #35 from Serverless-Devs/memory-collections
feat: memorycollection implement
2 parents a7e906b + 61f64dc commit d762343

File tree

17 files changed

+4102
-2
lines changed

17 files changed

+4102
-2
lines changed

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,15 @@ JINJA2_FILES := \
4545
agentrun/credential/api/control.py \
4646
agentrun/model/api/control.py \
4747
agentrun/toolset/api/control.py \
48-
agentrun/sandbox/api/control.py
48+
agentrun/sandbox/api/control.py \
49+
agentrun/memory_collection/api/control.py
4950
JINJA2_CONFIGS := \
5051
codegen/configs/agent_runtime_control_api.yaml \
5152
codegen/configs/credential_control_api.yaml \
5253
codegen/configs/model_control_api.yaml \
5354
codegen/configs/toolset_control_api.yaml \
5455
codegen/configs/sandbox_control_api.yaml \
56+
codegen/configs/memory_collection_control_api.yaml \
5557

5658
define make_jinja2_rule
5759
$(1): $(2)
@@ -65,6 +67,7 @@ $(eval $(call make_jinja2_rule,agentrun/credential/api/control.py,codegen/config
6567
$(eval $(call make_jinja2_rule,agentrun/model/api/control.py,codegen/configs/model_control_api.yaml))
6668
$(eval $(call make_jinja2_rule,agentrun/toolset/api/control.py,codegen/configs/toolset_control_api.yaml))
6769
$(eval $(call make_jinja2_rule,agentrun/sandbox/api/control.py,codegen/configs/sandbox_control_api.yaml))
70+
$(eval $(call make_jinja2_rule,agentrun/memory_collection/api/control.py,codegen/configs/memory_collection_control_api.yaml))
6871
TEMPLATE_FILES := $(shell find . -name "__*async_template.py" -not -path "*__pycache__*" -not -path "*egg-info*")
6972

7073
# 根据模板文件生成对应的输出文件路径

agentrun/__init__.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,22 @@
5555
CredentialUpdateInput,
5656
RelatedResource,
5757
)
58+
# Memory Collection
59+
from agentrun.memory_collection import (
60+
EmbedderConfig,
61+
EmbedderConfigConfig,
62+
LLMConfig,
63+
LLMConfigConfig,
64+
MemoryCollection,
65+
MemoryCollectionClient,
66+
MemoryCollectionCreateInput,
67+
MemoryCollectionListInput,
68+
MemoryCollectionListOutput,
69+
MemoryCollectionUpdateInput,
70+
NetworkConfiguration,
71+
VectorStoreConfig,
72+
VectorStoreConfigConfig,
73+
)
5874
# Model Service
5975
from agentrun.model import (
6076
BackendType,
@@ -173,6 +189,23 @@
173189
"CredentialCreateInput",
174190
"CredentialUpdateInput",
175191
"CredentialListInput",
192+
######## Memory Collection ########
193+
# base
194+
"MemoryCollection",
195+
"MemoryCollectionClient",
196+
# inner model
197+
"EmbedderConfig",
198+
"EmbedderConfigConfig",
199+
"LLMConfig",
200+
"LLMConfigConfig",
201+
"NetworkConfiguration",
202+
"VectorStoreConfig",
203+
"VectorStoreConfigConfig",
204+
# api model
205+
"MemoryCollectionCreateInput",
206+
"MemoryCollectionUpdateInput",
207+
"MemoryCollectionListInput",
208+
"MemoryCollectionListOutput",
176209
######## Model ########
177210
# base
178211
"ModelClient",
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
"""MemoryCollection 客户端 / MemoryCollection Client
2+
3+
此模块提供记忆集合管理的客户端API。
4+
This module provides the client API for memory collection management.
5+
"""
6+
7+
from typing import Optional
8+
9+
from alibabacloud_agentrun20250910.models import (
10+
CreateMemoryCollectionInput,
11+
ListMemoryCollectionsRequest,
12+
UpdateMemoryCollectionInput,
13+
)
14+
15+
from agentrun.utils.config import Config
16+
from agentrun.utils.exception import HTTPError
17+
18+
from .api.control import MemoryCollectionControlAPI
19+
from .memory_collection import MemoryCollection
20+
from .model import (
21+
MemoryCollectionCreateInput,
22+
MemoryCollectionListInput,
23+
MemoryCollectionListOutput,
24+
MemoryCollectionUpdateInput,
25+
)
26+
27+
28+
class MemoryCollectionClient:
29+
"""MemoryCollection 客户端 / MemoryCollection Client
30+
31+
提供记忆集合的创建、删除、更新和查询功能。
32+
Provides create, delete, update and query functions for memory collections.
33+
"""
34+
35+
def __init__(self, config: Optional[Config] = None):
36+
"""初始化客户端 / Initialize client
37+
38+
Args:
39+
config: 配置对象,可选 / Configuration object, optional
40+
"""
41+
self.__control_api = MemoryCollectionControlAPI(config)
42+
43+
async def create_async(
44+
self,
45+
input: MemoryCollectionCreateInput,
46+
config: Optional[Config] = None,
47+
):
48+
"""创建记忆集合(异步) / Create memory collection asynchronously
49+
50+
Args:
51+
input: 记忆集合输入参数 / Memory collection input parameters
52+
config: 配置对象,可选 / Configuration object, optional
53+
54+
Returns:
55+
MemoryCollection: 创建的记忆集合对象 / Created memory collection object
56+
57+
Raises:
58+
ResourceAlreadyExistError: 资源已存在 / Resource already exists
59+
HTTPError: HTTP 请求错误 / HTTP request error
60+
"""
61+
try:
62+
result = await self.__control_api.create_memory_collection_async(
63+
CreateMemoryCollectionInput().from_map(input.model_dump()),
64+
config=config,
65+
)
66+
67+
return MemoryCollection.from_inner_object(result)
68+
except HTTPError as e:
69+
raise e.to_resource_error(
70+
"MemoryCollection", input.memory_collection_name
71+
) from e
72+
73+
async def delete_async(
74+
self, memory_collection_name: str, config: Optional[Config] = None
75+
):
76+
"""删除记忆集合(异步)
77+
78+
Args:
79+
memory_collection_name: 记忆集合名称
80+
config: 配置
81+
82+
Raises:
83+
ResourceNotExistError: 记忆集合不存在
84+
"""
85+
try:
86+
result = await self.__control_api.delete_memory_collection_async(
87+
memory_collection_name, config=config
88+
)
89+
90+
return MemoryCollection.from_inner_object(result)
91+
92+
except HTTPError as e:
93+
raise e.to_resource_error(
94+
"MemoryCollection", memory_collection_name
95+
) from e
96+
97+
async def update_async(
98+
self,
99+
memory_collection_name: str,
100+
input: MemoryCollectionUpdateInput,
101+
config: Optional[Config] = None,
102+
):
103+
"""更新记忆集合(异步)
104+
105+
Args:
106+
memory_collection_name: 记忆集合名称
107+
input: 记忆集合更新输入参数
108+
config: 配置
109+
110+
Returns:
111+
MemoryCollection: 更新后的记忆集合对象
112+
113+
Raises:
114+
ResourceNotExistError: 记忆集合不存在
115+
"""
116+
try:
117+
result = await self.__control_api.update_memory_collection_async(
118+
memory_collection_name,
119+
UpdateMemoryCollectionInput().from_map(input.model_dump()),
120+
config=config,
121+
)
122+
123+
return MemoryCollection.from_inner_object(result)
124+
except HTTPError as e:
125+
raise e.to_resource_error(
126+
"MemoryCollection", memory_collection_name
127+
) from e
128+
129+
async def get_async(
130+
self, memory_collection_name: str, config: Optional[Config] = None
131+
):
132+
"""获取记忆集合(异步)
133+
134+
Args:
135+
memory_collection_name: 记忆集合名称
136+
config: 配置
137+
138+
Returns:
139+
MemoryCollection: 记忆集合对象
140+
141+
Raises:
142+
ResourceNotExistError: 记忆集合不存在
143+
"""
144+
try:
145+
result = await self.__control_api.get_memory_collection_async(
146+
memory_collection_name, config=config
147+
)
148+
return MemoryCollection.from_inner_object(result)
149+
except HTTPError as e:
150+
raise e.to_resource_error(
151+
"MemoryCollection", memory_collection_name
152+
) from e
153+
154+
async def list_async(
155+
self,
156+
input: Optional[MemoryCollectionListInput] = None,
157+
config: Optional[Config] = None,
158+
):
159+
"""列出记忆集合(异步)
160+
161+
Args:
162+
input: 分页查询参数
163+
config: 配置
164+
165+
Returns:
166+
List[MemoryCollectionListOutput]: 记忆集合列表
167+
"""
168+
if input is None:
169+
input = MemoryCollectionListInput()
170+
171+
results = await self.__control_api.list_memory_collections_async(
172+
ListMemoryCollectionsRequest().from_map(input.model_dump()),
173+
config=config,
174+
)
175+
return [
176+
MemoryCollectionListOutput.from_inner_object(item)
177+
for item in results.items # type: ignore
178+
]
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
"""MemoryCollection 模块 / MemoryCollection Module
2+
3+
提供记忆集合管理功能。
4+
Provides memory collection management functionality.
5+
"""
6+
7+
from .client import MemoryCollectionClient
8+
from .memory_collection import MemoryCollection
9+
from .model import (
10+
EmbedderConfig,
11+
EmbedderConfigConfig,
12+
LLMConfig,
13+
LLMConfigConfig,
14+
MemoryCollectionCreateInput,
15+
MemoryCollectionListInput,
16+
MemoryCollectionListOutput,
17+
MemoryCollectionUpdateInput,
18+
NetworkConfiguration,
19+
VectorStoreConfig,
20+
VectorStoreConfigConfig,
21+
)
22+
23+
__all__ = [
24+
"MemoryCollection",
25+
"MemoryCollectionClient",
26+
"MemoryCollectionCreateInput",
27+
"MemoryCollectionUpdateInput",
28+
"MemoryCollectionListInput",
29+
"MemoryCollectionListOutput",
30+
"EmbedderConfig",
31+
"EmbedderConfigConfig",
32+
"LLMConfig",
33+
"LLMConfigConfig",
34+
"NetworkConfiguration",
35+
"VectorStoreConfig",
36+
"VectorStoreConfigConfig",
37+
]

0 commit comments

Comments
 (0)