初始化提交
This commit is contained in:
commit
887c1f449e
963 files changed
+166869
No files matched your search
@@ -0,0 +1,44 @@
|
||||
"""工具输出防护示例 Skill。"""
|
||||
|
||||
from dataclasses import replace
|
||||
|
||||
from app.application.agent.extensions import (
|
||||
AfterToolCallDecision,
|
||||
AgentRunContext,
|
||||
ExtensionRegistry,
|
||||
ToolCallContext,
|
||||
)
|
||||
from app.application.agent.python_skills import PythonSkillDefinition
|
||||
from app.modules.tool_runtime.definition import ToolResult
|
||||
|
||||
_MAX_OUTPUT_CHARS = 4000
|
||||
|
||||
|
||||
async def _limit_tool_output(
|
||||
_call: ToolCallContext,
|
||||
result: ToolResult,
|
||||
_run: AgentRunContext,
|
||||
) -> AfterToolCallDecision | None:
|
||||
if len(result.stdout) <= _MAX_OUTPUT_CHARS and len(result.stderr) <= _MAX_OUTPUT_CHARS:
|
||||
return None
|
||||
return AfterToolCallDecision(
|
||||
result=replace(
|
||||
result,
|
||||
stdout=result.stdout[:_MAX_OUTPUT_CHARS],
|
||||
stderr=result.stderr[:_MAX_OUTPUT_CHARS],
|
||||
truncated=True,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def _setup(registry: ExtensionRegistry) -> None:
|
||||
registry.add_after_tool_hook(_limit_tool_output)
|
||||
|
||||
|
||||
SKILL = PythonSkillDefinition(
|
||||
name="response_guard",
|
||||
description="限制过长工具输出,避免无关内容挤占模型上下文。",
|
||||
triggers=("长输出", "大量输出", "response guard"),
|
||||
instructions="工具输出可能很长;优先分段读取,只保留完成当前任务所需的内容。",
|
||||
setup=_setup,
|
||||
)
|
||||
Reference in new issue
Block a user