Fix chunk finder
This commit is contained in:
parent
8002962f03
commit
a26c19a80a
|
@ -39,11 +39,29 @@ def parse_output_node(state: EmailGenerationState) -> EmailGenerationState:
|
||||||
subject = _validate_subject(subject)
|
subject = _validate_subject(subject)
|
||||||
body = _validate_body(body)
|
body = _validate_body(body)
|
||||||
|
|
||||||
|
ranked_context = state.get("ranked_context")
|
||||||
|
real_chunk_ids = []
|
||||||
|
|
||||||
|
if isinstance(used_chunks, list) and ranked_context:
|
||||||
|
for chunk_idx in used_chunks:
|
||||||
|
try:
|
||||||
|
idx = int(chunk_idx) - 1
|
||||||
|
if 0 <= idx < len(ranked_context.chunks):
|
||||||
|
chunk = ranked_context.chunks[idx]
|
||||||
|
chunk_info = f"{chunk.parent_doc_id}#{chunk.chunk_id}"
|
||||||
|
real_chunk_ids.append(chunk_info)
|
||||||
|
else:
|
||||||
|
real_chunk_ids.append(str(chunk_idx))
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
real_chunk_ids.append(str(chunk_idx))
|
||||||
|
else:
|
||||||
|
real_chunk_ids = []
|
||||||
|
|
||||||
email_draft = EmailDraft(
|
email_draft = EmailDraft(
|
||||||
subject=subject,
|
subject=subject,
|
||||||
body=body,
|
body=body,
|
||||||
short_reasoning=short_reasoning,
|
short_reasoning=short_reasoning,
|
||||||
used_chunks=used_chunks if isinstance(used_chunks, list) else [],
|
used_chunks=real_chunk_ids,
|
||||||
)
|
)
|
||||||
|
|
||||||
state["email_draft"] = email_draft
|
state["email_draft"] = email_draft
|
||||||
|
|
|
@ -70,12 +70,7 @@ class RetrievalService:
|
||||||
|
|
||||||
text_query = " ".join(search_terms)
|
text_query = " ".join(search_terms)
|
||||||
|
|
||||||
metadata_filters = {}
|
metadata_filters = None
|
||||||
if lead_features.industry_tag != "other":
|
|
||||||
metadata_filters["$or"] = [
|
|
||||||
{"industry": {"$contains": lead_features.industry_tag}},
|
|
||||||
{"roles_relevant": {"$contains": lead_features.role_category}},
|
|
||||||
]
|
|
||||||
|
|
||||||
return RetrievalQuery(
|
return RetrievalQuery(
|
||||||
text_query=text_query,
|
text_query=text_query,
|
||||||
|
@ -155,9 +150,12 @@ class RetrievalService:
|
||||||
if chunk.metadata.get("metrics"):
|
if chunk.metadata.get("metrics"):
|
||||||
metrics = chunk.metadata["metrics"]
|
metrics = chunk.metadata["metrics"]
|
||||||
metrics_parts = []
|
metrics_parts = []
|
||||||
for key, value in metrics.items():
|
if isinstance(metrics, dict):
|
||||||
if isinstance(value, (int, float)):
|
for key, value in metrics.items():
|
||||||
metrics_parts.append(f"{key}: {value}")
|
if isinstance(value, (int, float)):
|
||||||
|
metrics_parts.append(f"{key}: {value}")
|
||||||
|
elif isinstance(metrics, str):
|
||||||
|
metrics_parts.append(metrics)
|
||||||
if metrics_parts:
|
if metrics_parts:
|
||||||
metrics_info = f" ({', '.join(metrics_parts)})"
|
metrics_info = f" ({', '.join(metrics_parts)})"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue