Skip to content

Commit 2fb31b3

Browse files
authored
feat: integrate vikingdb-python-sdk for memory backend (#349)
* feat: integrate vikingdb-python-sdk for memory backend * fix: add sts token in viking memory sdk client * fix: pre-commit check
1 parent f6303af commit 2fb31b3

File tree

3 files changed

+29
-32
lines changed

3 files changed

+29
-32
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ dependencies = [
4040
"aiomysql>=0.3.2", # For async MySQL database (short term memory)
4141
"opensearch-py==2.8.0",
4242
"filetype>=1.2.0",
43+
"vikingdb-python-sdk>=0.1.3",
4344
"agentkit-sdk-python"
4445
]
4546

veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ def setHeader(self, header):
9595
api_info[key].header[item] = header[item]
9696
self.api_info = api_info
9797

98+
def get_host(self):
99+
return self.service_info.host
100+
98101
@staticmethod
99102
def get_service_info(host, region, scheme, connection_timeout, socket_timeout):
100103
service_info = ServiceInfo(
@@ -281,28 +284,3 @@ def update_collection(
281284
}
282285
res = self.json("UpdateCollection", {}, json.dumps(params))
283286
return json.loads(res)
284-
285-
def search_memory(self, collection_name, query, filter, limit=10):
286-
params = {
287-
"collection_name": collection_name,
288-
"limit": limit,
289-
"filter": filter,
290-
}
291-
if query:
292-
params["query"] = query
293-
res = self.json("SearchMemory", {}, json.dumps(params))
294-
return json.loads(res)
295-
296-
def add_messages(
297-
self, collection_name, session_id, messages, metadata, entities=None
298-
):
299-
params = {
300-
"collection_name": collection_name,
301-
"session_id": session_id,
302-
"messages": messages,
303-
"metadata": metadata,
304-
}
305-
if entities is not None:
306-
params["entities"] = entities
307-
res = self.json("AddMessages", {}, json.dumps(params))
308-
return json.loads(res)

veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030
from veadk.memory.long_term_memory_backends.base_backend import (
3131
BaseLongTermMemoryBackend,
3232
)
33+
from vikingdb import IAM
34+
from vikingdb.memory import VikingMem
35+
3336
from veadk.utils.logger import get_logger
3437

3538
logger = get_logger(__name__)
@@ -118,6 +121,18 @@ def _get_client(self) -> VikingDBMemoryClient:
118121
region=self.region,
119122
)
120123

124+
def _get_sdk_client(self) -> VikingMem:
125+
client = self._get_client()
126+
return VikingMem(
127+
host=client.get_host(),
128+
region=self.region,
129+
auth=IAM(
130+
ak=self.volcengine_access_key,
131+
sk=self.volcengine_secret_key,
132+
),
133+
sts_token=self.session_token,
134+
)
135+
121136
@override
122137
def save_memory(self, user_id: str, event_strings: list[str], **kwargs) -> bool:
123138
assistant_id = kwargs.get("assistant_id", "assistant")
@@ -140,12 +155,12 @@ def save_memory(self, user_id: str, event_strings: list[str], **kwargs) -> bool:
140155
f"Request for add {len(messages)} memory to VikingDB: collection_name={self.index}, metadata={metadata}, session_id={session_id}"
141156
)
142157

143-
client = self._get_client()
144-
response = client.add_messages(
145-
collection_name=self.index,
158+
client = self._get_sdk_client()
159+
collection = client.get_collection(collection_name=self.index)
160+
response = collection.add_session(
161+
session_id=session_id,
146162
messages=messages,
147163
metadata=metadata,
148-
session_id=session_id,
149164
)
150165

151166
logger.debug(f"Response from add memory to VikingDB: {response}")
@@ -165,9 +180,12 @@ def search_memory(
165180
f"Request for search memory in VikingDB: filter={filter}, collection_name={self.index}, query={query}, limit={top_k}"
166181
)
167182

168-
client = self._get_client()
169-
response = client.search_memory(
170-
collection_name=self.index, query=query, filter=filter, limit=top_k
183+
client = self._get_sdk_client()
184+
collection = client.get_collection(collection_name=self.index)
185+
response = collection.search_memory(
186+
query=query,
187+
filter=filter,
188+
limit=top_k,
171189
)
172190

173191
logger.debug(f"Response from search memory in VikingDB: {response}")

0 commit comments

Comments
 (0)