MCPcopy Create free account
hub / github.com/apache/impala / TryExtractAssistantContentText

Function TryExtractAssistantContentText

be/src/service/query-profile-ai-analysis.cc:589–624  ·  view source on GitHub ↗

Extracts assistant content text from string or content-part array formats.

Source from the content-addressed store, hash-verified

587
588// Extracts assistant content text from string or content-part array formats.
589static bool TryExtractAssistantContentText(
590 const Value* assistant_message, string* assistant_content) {
591 DCHECK(assistant_content != nullptr);
592 if (assistant_message == nullptr) return false;
593 if (assistant_content == nullptr) return false;
594 assistant_content->clear();
595 if (!assistant_message->HasMember(JSON_KEY_CONTENT)) return false;
596
597 const Value& content = (*assistant_message)[JSON_KEY_CONTENT];
598 if (content.IsString()) {
599 assistant_content->assign(content.GetString(), content.GetStringLength());
600 return true;
601 }
602 if (!content.IsArray()) return false;
603
604 for (rapidjson::SizeType i = 0; i < content.Size(); ++i) {
605 const Value& part = content[i];
606 if (!part.IsObject()) continue;
607
608 const Value* text_field = nullptr;
609 if (part.HasMember(JSON_KEY_TEXT) && part[JSON_KEY_TEXT].IsString()) {
610 text_field = &part[JSON_KEY_TEXT];
611 } else if (part.HasMember(JSON_KEY_OUTPUT_TEXT)
612 && part[JSON_KEY_OUTPUT_TEXT].IsString()) {
613 text_field = &part[JSON_KEY_OUTPUT_TEXT];
614 } else if (part.HasMember(JSON_KEY_TEXT) && part[JSON_KEY_TEXT].IsObject()
615 && part[JSON_KEY_TEXT].HasMember(JSON_KEY_VALUE)
616 && part[JSON_KEY_TEXT][JSON_KEY_VALUE].IsString()) {
617 text_field = &part[JSON_KEY_TEXT][JSON_KEY_VALUE];
618 }
619 if (text_field == nullptr) continue;
620 if (!assistant_content->empty()) assistant_content->append("\n");
621 assistant_content->append(text_field->GetString(), text_field->GetStringLength());
622 }
623 return !assistant_content->empty();
624}
625
626namespace test {
627

Callers 2

TESTFunction · 0.85

Calls 5

clearMethod · 0.65
GetStringMethod · 0.45
SizeMethod · 0.45
emptyMethod · 0.45
appendMethod · 0.45

Tested by 1

TESTFunction · 0.68