Skip to content

Commit b1053c4

Browse files
author
yuan.wang
committed
add internet reference in playground chat stream
1 parent b4fe866 commit b1053c4

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

src/memos/api/handlers/chat_handler.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,12 @@ def generate_chat_response() -> Generator[str, None, None]:
394394

395395
# Prepare reference data
396396
reference = prepare_reference_data(filtered_memories)
397+
# get internet reference
398+
internet_reference = self._get_internet_reference(
399+
search_response.data.get("text_mem")[0]["memories"]
400+
)
397401
yield f"data: {json.dumps({'type': 'reference', 'data': reference})}\n\n"
402+
yield f"data: {json.dumps({'type': 'internet_reference', 'data': internet_reference})}\n\n"
398403

399404
# Prepare preference markdown string
400405
if chat_req.include_preference:
@@ -535,6 +540,23 @@ def generate_chat_response() -> Generator[str, None, None]:
535540
self.logger.error(f"Failed to start chat stream: {traceback.format_exc()}")
536541
raise HTTPException(status_code=500, detail=str(traceback.format_exc())) from err
537542

543+
def _get_internet_reference(
544+
self, search_response: list[dict[str, any]]
545+
) -> list[dict[str, any]]:
546+
"""Get internet reference from search response."""
547+
unique_set = set()
548+
result = []
549+
550+
for item in search_response:
551+
meta = item.get("metadata", {})
552+
if meta.get("source") == "web" and meta.get("internet_info"):
553+
info = meta.get("internet_info")
554+
key = json.dumps(info, sort_keys=True)
555+
if key not in unique_set:
556+
unique_set.add(key)
557+
result.append(info)
558+
return result
559+
538560
def _build_pref_md_string_for_playground(self, pref_mem_list: list[any]) -> str:
539561
"""Build preference markdown string for playground."""
540562
explicit = []

src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,11 @@ def _process_result(
200200
"""Process one Bocha search result into TextualMemoryItem."""
201201
title = result.get("name", "")
202202
content = result.get("summary", "") or result.get("snippet", "")
203-
summary = result.get("snippet", "")
203+
summary = result.get("summary", "") or result.get("snippet", "")
204204
url = result.get("url", "")
205205
publish_time = result.get("datePublished", "")
206+
site_name = result.get("siteName", "")
207+
site_icon = result.get("siteIcon")
206208

207209
if publish_time:
208210
try:
@@ -229,5 +231,12 @@ def _process_result(
229231
read_item_i.metadata.memory_type = "OuterMemory"
230232
read_item_i.metadata.sources = [SourceMessage(type="web", url=url)] if url else []
231233
read_item_i.metadata.visibility = "public"
234+
read_item_i.metadata.internet_info = {
235+
"title": title,
236+
"url": url,
237+
"site_name": site_name,
238+
"site_icon": site_icon,
239+
"summary": summary,
240+
}
232241
memory_items.append(read_item_i)
233242
return memory_items

src/memos/memories/textual/tree_text_memory/retrieve/searcher.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ def _retrieve_from_internet(
445445
user_id: str | None = None,
446446
):
447447
"""Retrieve and rerank from Internet source"""
448-
if not self.internet_retriever or mode == "fast":
448+
if not self.internet_retriever:
449449
logger.info(f"[PATH-C] '{query}' Skipped (no retriever, fast mode)")
450450
return []
451451
if memory_type not in ["All"]:

0 commit comments

Comments
 (0)