mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-18 23:25:10 +08:00
refactor: remove legacy TOOL_CALL_HISTORY/TOOL_RESULT_HISTORY markers and consolidate tool call formatting into a new prompt package
This commit is contained in:
@@ -140,30 +140,6 @@ function extractJSONObjectFrom(text, start) {
|
||||
return { ok: false, end: 0 };
|
||||
}
|
||||
|
||||
function extractToolHistoryBlock(captured, keyIdx) {
|
||||
if (typeof captured !== 'string' || keyIdx < 0 || keyIdx >= captured.length) {
|
||||
return { ok: false, start: 0, end: 0 };
|
||||
}
|
||||
const rest = captured.slice(keyIdx).toLowerCase();
|
||||
if (rest.startsWith('[tool_call_history]')) {
|
||||
const closeTag = '[/tool_call_history]';
|
||||
const closeIdx = rest.indexOf(closeTag);
|
||||
if (closeIdx < 0) {
|
||||
return { ok: false, start: 0, end: 0 };
|
||||
}
|
||||
return { ok: true, start: keyIdx, end: keyIdx + closeIdx + closeTag.length };
|
||||
}
|
||||
if (rest.startsWith('[tool_result_history]')) {
|
||||
const closeTag = '[/tool_result_history]';
|
||||
const closeIdx = rest.indexOf(closeTag);
|
||||
if (closeIdx < 0) {
|
||||
return { ok: false, start: 0, end: 0 };
|
||||
}
|
||||
return { ok: true, start: keyIdx, end: keyIdx + closeIdx + closeTag.length };
|
||||
}
|
||||
return { ok: false, start: 0, end: 0 };
|
||||
}
|
||||
|
||||
function trimWrappingJSONFence(prefix, suffix) {
|
||||
const rightTrimmedPrefix = (prefix || '').replace(/[ \t\r\n]+$/g, '');
|
||||
const fenceIdx = rightTrimmedPrefix.lastIndexOf('```');
|
||||
@@ -192,6 +168,5 @@ module.exports = {
|
||||
parseJSONStringLiteral,
|
||||
skipSpaces,
|
||||
extractJSONObjectFrom,
|
||||
extractToolHistoryBlock,
|
||||
trimWrappingJSONFence,
|
||||
};
|
||||
|
||||
@@ -5,7 +5,7 @@ const {
|
||||
insideCodeFenceWithState,
|
||||
} = require('./state');
|
||||
const { parseStandaloneToolCallsDetailed } = require('./parse');
|
||||
const { extractJSONObjectFrom, extractToolHistoryBlock, trimWrappingJSONFence } = require('./jsonscan');
|
||||
const { extractJSONObjectFrom, trimWrappingJSONFence } = require('./jsonscan');
|
||||
const {
|
||||
TOOL_SEGMENT_KEYWORDS,
|
||||
XML_TOOL_SEGMENT_TAGS,
|
||||
@@ -233,17 +233,6 @@ function consumeToolCapture(state, toolNames) {
|
||||
}
|
||||
const start = captured.slice(0, keyIdx).lastIndexOf('{');
|
||||
const actualStart = start >= 0 ? start : keyIdx;
|
||||
if (start < 0) {
|
||||
const history = extractToolHistoryBlock(captured, keyIdx);
|
||||
if (history.ok) {
|
||||
return {
|
||||
ready: true,
|
||||
prefix: captured.slice(0, history.start),
|
||||
calls: [],
|
||||
suffix: captured.slice(history.end),
|
||||
};
|
||||
}
|
||||
}
|
||||
const obj = extractJSONObjectFrom(captured, actualStart);
|
||||
if (!obj.ok) {
|
||||
return { ready: false, prefix: '', calls: [], suffix: '' };
|
||||
|
||||
@@ -4,8 +4,6 @@ const TOOL_SEGMENT_KEYWORDS = [
|
||||
'tool_calls',
|
||||
'"function"',
|
||||
'function.name:',
|
||||
'[tool_call_history]',
|
||||
'[tool_result_history]',
|
||||
];
|
||||
|
||||
const XML_TOOL_SEGMENT_TAGS = [
|
||||
|
||||
Reference in New Issue
Block a user