mirror of
https://github.com/jie65535/JChatGPT.git
synced 2026-02-02 20:18:10 +08:00
Add maxToolOutputLength config
This commit is contained in:
@@ -481,6 +481,17 @@ object JChatGPT : KotlinPlugin(
|
||||
|
||||
private val thinkRegex = Regex("<think>[\\s\\S]*?</think>")
|
||||
|
||||
/**
|
||||
* 截断过长的工具输出,并添加省略标记
|
||||
*/
|
||||
private fun truncateToolOutput(content: String, maxLength: Int = PluginConfig.maxToolOutputLength): String {
|
||||
if (content.length <= maxLength) return content
|
||||
|
||||
val truncated = content.take(maxLength)
|
||||
val marker = "\n\n[系统提示:因内容过长,部分内容已被省略]"
|
||||
return truncated + marker
|
||||
}
|
||||
|
||||
private suspend fun startChat(event: MessageEvent) {
|
||||
if (!requestMap.add(event.subject.id)) {
|
||||
logger.warning("The current Contact is busy!")
|
||||
@@ -880,6 +891,13 @@ object JChatGPT : KotlinPlugin(
|
||||
"工具调用失败,请尝试自行回答用户,或如实告知。\n异常信息:${e.message}"
|
||||
}
|
||||
logger.info("Result=\"$result\"")
|
||||
|
||||
// 截断过长的工具输出
|
||||
val truncatedResult = truncateToolOutput(result)
|
||||
if (truncatedResult.length != result.length) {
|
||||
logger.warning("工具 ${function.name} 返回内容过长,已从 ${result.length} 字符截断至 ${truncatedResult.length} 字符")
|
||||
}
|
||||
|
||||
// 过会撤回加载消息
|
||||
if (receipt != null) {
|
||||
launch {
|
||||
@@ -895,7 +913,7 @@ object JChatGPT : KotlinPlugin(
|
||||
}
|
||||
}
|
||||
}
|
||||
return result
|
||||
return truncatedResult
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -119,4 +119,7 @@ object PluginConfig : AutoSavePluginConfig("Config") {
|
||||
|
||||
@ValueDescription("请求主人回复等待时间,单位毫秒,默认300秒")
|
||||
val requestOwnerWaitTimeout: Long by value(300000L)
|
||||
|
||||
@ValueDescription("单个工具调用返回内容的最大字符数,超过将被截断并标注")
|
||||
val maxToolOutputLength: Int by value(15000)
|
||||
}
|
||||
Reference in New Issue
Block a user