mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-10-04 20:14:13 +00:00
Some checks failed
Integration Tests (Replay) / Integration Tests (, , , client=, vision=) (push) Failing after 2s
Test External Providers Installed via Module / test-external-providers-from-module (venv) (push) Has been skipped
Python Package Build Test / build (3.13) (push) Failing after 1s
Integration Auth Tests / test-matrix (oauth2_token) (push) Failing after 5s
Pre-commit / pre-commit (push) Failing after 3s
Unit Tests / unit-tests (3.12) (push) Failing after 1s
Vector IO Integration Tests / test-matrix (push) Failing after 5s
Test External API and Providers / test-external (venv) (push) Failing after 4s
Python Package Build Test / build (3.12) (push) Failing after 5s
Update ReadTheDocs / update-readthedocs (push) Failing after 2s
Unit Tests / unit-tests (3.13) (push) Failing after 5s
UI Tests / ui-tests (22) (push) Failing after 6s
SqlStore Integration Tests / test-postgres (3.12) (push) Failing after 12s
SqlStore Integration Tests / test-postgres (3.13) (push) Failing after 13s
51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
// check if content contains function call JSON
|
|
export const containsToolCall = (content: string): boolean => {
|
|
return (
|
|
content.includes('"type": "function"') ||
|
|
content.includes('"name": "knowledge_search"') ||
|
|
content.includes('"parameters":') ||
|
|
!!content.match(/\{"type":\s*"function".*?\}/)
|
|
);
|
|
};
|
|
|
|
export const extractCleanText = (content: string): string | null => {
|
|
if (containsToolCall(content)) {
|
|
try {
|
|
// parse and extract non-function call parts
|
|
const jsonMatch = content.match(/\{"type":\s*"function"[^}]*\}[^}]*\}/);
|
|
if (jsonMatch) {
|
|
const jsonPart = jsonMatch[0];
|
|
const parsedJson = JSON.parse(jsonPart);
|
|
|
|
// if function call, extract text after JSON
|
|
if (parsedJson.type === "function") {
|
|
const textAfterJson = content
|
|
.substring(content.indexOf(jsonPart) + jsonPart.length)
|
|
.trim();
|
|
return textAfterJson || null;
|
|
}
|
|
}
|
|
return null;
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
return content;
|
|
};
|
|
|
|
// removes function call JSON handling different content types
|
|
export const cleanMessageContent = (
|
|
content: string | unknown[] | unknown
|
|
): string => {
|
|
if (typeof content === "string") {
|
|
const cleaned = extractCleanText(content);
|
|
return cleaned || "";
|
|
} else if (Array.isArray(content)) {
|
|
return content
|
|
.filter((item: { type: string }) => item.type === "text")
|
|
.map((item: { text: string }) => item.text)
|
|
.join("");
|
|
} else {
|
|
return JSON.stringify(content);
|
|
}
|
|
};
|