Update JSON Extraction Method in Assistants
- Replaced `json.Parse` with `text.ExtractJSON` in the `Next` function of both the `keyword` and `needsearch` assistants for improved fault-tolerant JSON extraction from LLM output. - Simplified content handling by removing unnecessary markdown code block processing, enhancing clarity and efficiency in keyword extraction. - Updated comments to reflect the changes in the extraction method, ensuring better understanding of the functionality.
This commit is contained in:
parent
e07c3cf0bc
commit
c2a35bf667
4 changed files with 172 additions and 191 deletions
318
data/bindata.go
318
data/bindata.go
File diff suppressed because it is too large
Load diff
1
main.go
1
main.go
|
|
@ -3,6 +3,7 @@ package main
|
|||
import (
|
||||
_ "github.com/yaoapp/gou/diff"
|
||||
_ "github.com/yaoapp/gou/encoding"
|
||||
_ "github.com/yaoapp/gou/text"
|
||||
_ "github.com/yaoapp/yao/aigc"
|
||||
_ "github.com/yaoapp/yao/crypto"
|
||||
_ "github.com/yaoapp/yao/excel"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
/**
|
||||
* Next hook - processes keyword extraction response
|
||||
* Uses json.Parse for fault-tolerant JSON parsing
|
||||
* Uses text.ExtractJSON for fault-tolerant JSON extraction from LLM output
|
||||
*/
|
||||
function Next(
|
||||
ctx: agent.Context,
|
||||
|
|
@ -20,24 +20,13 @@ function Next(
|
|||
return null;
|
||||
}
|
||||
|
||||
// Remove markdown code block if present
|
||||
let content = completion.content.trim();
|
||||
if (content.startsWith("```json")) {
|
||||
content = content.slice(7);
|
||||
} else if (content.startsWith("```")) {
|
||||
content = content.slice(3);
|
||||
}
|
||||
if (content.endsWith("```")) {
|
||||
content = content.slice(0, -3);
|
||||
}
|
||||
content = content.trim();
|
||||
|
||||
// Try to parse JSON from completion content
|
||||
const content = completion.content;
|
||||
let keywords: string[] = [];
|
||||
|
||||
try {
|
||||
// Use json.Parse for fault-tolerant parsing (handles broken JSON, JSONC, etc.)
|
||||
const parsed = Process("json.Parse", content) as {
|
||||
// Use text.ExtractJSON for fault-tolerant extraction
|
||||
// Handles markdown code blocks, broken JSON, etc.
|
||||
const parsed = Process("text.ExtractJSON", content) as {
|
||||
keywords?: string[];
|
||||
} | null;
|
||||
|
||||
|
|
@ -47,7 +36,7 @@ function Next(
|
|||
);
|
||||
}
|
||||
} catch (e) {
|
||||
// If json.Parse fails, try to extract keywords from text
|
||||
// If extraction fails, try to extract keywords from text
|
||||
keywords = extractKeywordsFromText(content);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ interface SearchResult {
|
|||
|
||||
/**
|
||||
* Next hook - processes search intent response
|
||||
* Uses json.Parse for fault-tolerant JSON parsing
|
||||
* Uses text.ExtractJSON for fault-tolerant JSON extraction from LLM output
|
||||
*/
|
||||
function Next(
|
||||
ctx: agent.Context,
|
||||
|
|
@ -26,17 +26,7 @@ function Next(
|
|||
return null;
|
||||
}
|
||||
|
||||
// Remove markdown code block if present
|
||||
let content = completion.content.trim();
|
||||
if (content.startsWith("```json")) {
|
||||
content = content.slice(7); // Remove ```json
|
||||
} else if (content.startsWith("```")) {
|
||||
content = content.slice(3); // Remove ```
|
||||
}
|
||||
if (content.endsWith("```")) {
|
||||
content = content.slice(0, -3); // Remove trailing ```
|
||||
}
|
||||
content = content.trim();
|
||||
const content = completion.content;
|
||||
|
||||
// Default result
|
||||
let result: SearchResult = {
|
||||
|
|
@ -46,8 +36,9 @@ function Next(
|
|||
};
|
||||
|
||||
try {
|
||||
// Use json.Parse for fault-tolerant parsing
|
||||
const parsed = Process("json.Parse", content) as {
|
||||
// Use text.ExtractJSON for fault-tolerant extraction
|
||||
// Handles markdown code blocks, broken JSON, etc.
|
||||
const parsed = Process("text.ExtractJSON", content) as {
|
||||
need_search?: boolean;
|
||||
search_types?: string[];
|
||||
confidence?: number;
|
||||
|
|
@ -68,7 +59,7 @@ function Next(
|
|||
: 0.5;
|
||||
}
|
||||
} catch (e) {
|
||||
// If json.Parse fails, try to extract from text
|
||||
// If extraction fails, try to extract from text
|
||||
result = extractFromText(content);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue