agentscope技能使用示例+prompt

python 复制代码
(.venv) PS E:\code\my_python_server>  e:; cd 'e:\code\my_python_server'; & 'e:\code\my_python_server\.venv\Scripts\python.exe' 'c:\Users\njsgcs\.lingma\extensions\ms-python.debugpy-2025.19.2026021801-win32-x64\bundled\libs\debugpy\launcher' '58350' '--' 'E:\code\my_python_server\start.py'
2026-02-21 22:57:58,751 | INFO    | _toolkit:register_agent_skill:1104 - Registered agent skill 'web_skill' from directory 'skills\web_skill'.
2026-02-21 22:57:58,752 | INFO    | _toolkit:register_agent_skill:1104 - Registered agent skill 'ue_skill' from directory 'skills\ue_skill'.
2026-02-21 22:57:58,752 | INFO    | _toolkit:register_agent_skill:1104 - Registered agent skill 'blender_skill' from directory 'skills\blender_skill'.
# Agent Skills
The agent skills are a collection of folds of instructions, scripts, and resources that you can load dynamically to improve performance on specialized tasks. Each agent skill has a `SKILL.md` file in its folder that describes how to use the skill. If you want to use a skill, you MUST read its `SKILL.md` file carefully.    
## web_skill
功能:打开网页,OCR识别,点击操作,滚动操作,YOLO检测,检查下载栏
Check "skills\web_skill/SKILL.md" for how to use this skill
## ue_skill
打开ue,导入FBX模型,构建Sifu MOD
Check "skills\ue_skill/SKILL.md" for how to use this skill
## blender_skill
打开Blender窗口,清理场景,导入psk,pmx模型,
Check "skills\blender_skill/SKILL.md" for how to use this skill
 * Serving Flask app 'share_config.flask_server'
 * Debug mode: off
INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:5001
 * Running on http://192.168.1.8:5001
INFO:werkzeug:Press CTRL+C to quit
打开blender
INFO:httpx:HTTP Request: POST http://127.0.0.1:11434/api/chat "HTTP/1.1 200 OK"
杜野凛世: {
    "type": "tool_use",
    "id": "0_view_text_file",
    "name": "view_text_file",
    "input": {
        "file_path": "skills\\blender_skill\\SKILL.md"
    },
    "raw_input": "{\"file_path\": \"skills\\\\blender_skill\\\\SKILL.md\"}"      
}
system: {
    "type": "tool_result",
    "id": "0_view_text_file",
    "name": "view_text_file",
    "output": [
        {
            "type": "text",
            "text": "The content of skills\\blender_skill\\SKILL.md:\n```\n1: ---\n2: name: blender_skill\n3: description: 打开Blender窗口,清理场景,导入psk,pmx模型,\n4: \n5: \n6: \n7: \n8: ---\n9: \n10: \n11: \n12: \n13: ## 详细功能\n14: \n15: - **打开Blender窗口**\n16:   - **工具**: start_blender\n17:   - **CLI调用**: `python skills/blender_skill/scripts/blender_start.py`\n18:   - **操作**: 打开start blender\n19: \n20: - **清理场景**\n21:   - **工具**: delete_all_objects\n22:   - **CLI调用**: `python skills/blender_skill/scripts/delete_all_objects.py`\n23:   - **操作**: 清空当前Blender场景中的所有物体\n24: \n25: - **导入PMX模型**\n26:   - **工具**: import_pmx\n27:   - **CLI调用**: `python skills/blender_skill/scripts/import_pmx.py`\n28:   - **操作**: 导入PMX格式的3D模型文件,不需要参数\n29: \n30: \n31: \n32: - **导入PSK模型**\n33:   - **工具**: import_psk\n34:     - **CLI调 用**: `python skills/blender_skill/scripts/import_psk.py`\n35:     - **操作**: 导入PSK格式的3D模型文件,不需要参数\n36: \n37: \n38: \n39: \n40: \n41: \n42: \n```" 
        }
    ]
}
INFO:httpx:HTTP Request: POST http://127.0.0.1:11434/api/chat "HTTP/1.1 200 OK"
杜野凛世: {
    "type": "tool_use",
    "id": "0_execute_shell_command",
    "name": "execute_shell_command",
    "input": {
        "command": "python skills/blender_skill/scripts/blender_start.py"        
    },
    "raw_input": "{\"command\": \"python skills/blender_skill/scripts/blender_start.py\"}"
}
system: {
    "type": "tool_result",
    "id": "0_execute_shell_command",
    "name": "execute_shell_command",
    "output": [
        {
            "type": "text",
            "text": "<returncode>0</returncode><stdout>Blender启动指令已发送\r\n</stdout><stderr></stderr>"
        }
    ]
}
INFO:httpx:HTTP Request: POST http://127.0.0.1:11434/api/chat "HTTP/1.1 200 OK"
杜野凛世: Blender 已经启动。另外,提醒您记得学习数学。

prompt:

复制代码
在使用任何技能前,请先用view_text_file方法读取对应技能目录下的 SKILL.md 文件,并严格按照说明用execute_shell_command操作。
python 复制代码
"""
负责定义agent
"""
import sys
import os
import logging

from llm_cline import langchain_chat_llm

sys.path.append(os.getcwd())
import time
from datetime import datetime
from agentscope.message import Msg, TextBlock, ImageBlock, Base64Source
from agentscope import agent, formatter, memory, tool
from agentscope.memory import InMemoryMemory
from agentscope.memory._long_term_memory._mem0._mem0_utils import _run_async_in_persistent_loop

from share_config.api_key import sys_prompt

from agent_scope.model import ollama_model_llm
from agentscope.tool import execute_shell_command, execute_python_code, view_text_file

# 配置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

toolkit = tool.Toolkit()

toolkit.register_tool_function(execute_shell_command)
toolkit.register_tool_function(execute_python_code)
toolkit.register_tool_function(view_text_file)

toolkit.register_agent_skill("skills\\web_skill")
toolkit.register_agent_skill("skills\\ue_skill")
toolkit.register_agent_skill("skills\\blender_skill")

sys_prompt = """
在使用任何技能前,请先用view_text_file方法读取对应技能目录下的 SKILL.md 文件,并严格按照说明用execute_shell_command操作。

"""

llm_agent = agent.ReActAgent(
    name="杜野凛世",
    sys_prompt=sys_prompt,
    model=ollama_model_llm,
    toolkit=toolkit,
    print_hint_msg=True,  # 启用提示信息打印
    formatter=formatter.OllamaChatFormatter(),
)


def print_tool_results(response_msg):
    """打印工具执行结果"""
    if hasattr(response_msg, 'content'):
        for block in response_msg.content:
            # 修复:检查 type 字段而不是使用 isinstance
            if isinstance(block, dict) and block.get("type") == "tool_result":
                tool_name = block.get("name", "Unknown")
                result = block.get("output", "")
                logger.info(f"🔧 工具调用结果 [{tool_name}]: {result}")


def llm_chat(user_input):
    """与视觉AI代理进行对话,获取屏幕描述和思考内容(使用持久化事件循环)"""
    llm_content = f"{user_input}"

    
    msg = Msg(
        name="User",
        content=[
            TextBlock(type="text", text=llm_content)
   
        ],
        role="user",
    )
    
    # 使用AgentScope的持久化事件循环管理器
    response_msg = _run_async_in_persistent_loop(llm_agent(msg))
    
    # 打印工具执行结果
    print_tool_results(response_msg)
    
    # 合并所有内容为一个字符串
    screen_description = response_msg.get_text_content()
    # 确保screen_description不为None
    if screen_description is None:
        screen_description = ""
    
    # 从metadata获取思考内容(如果有的话)
    thinking = ""
    if hasattr(response_msg, 'metadata') and response_msg.metadata:
        thinking = response_msg.metadata.get( 'thinking', '')
    combined_content = ""
    if thinking:
        combined_content += f"\n[思考内容]: {thinking}"

    combined_content += screen_description
    return combined_content
相关推荐
王解19 小时前
第五篇:与 LLM 对话 —— 模型接口封装与 Prompt 工程
prompt·nanobot
XLYcmy21 小时前
智能体大赛 总结与展望 比赛总结
大数据·ai·llm·prompt·agent·qwen·万方数据库
光的方向_1 天前
ChatGPT提示工程入门 Prompt 03-迭代式提示词开发
人工智能·chatgpt·prompt·aigc
XLYcmy2 天前
智能体大赛 实现逻辑 大容量数据预处理机制
ai·llm·json·prompt·api·检索·万方数据库
XLYcmy2 天前
智能体大赛 实现逻辑 “检索先行”的闭环工作流
数据库·ai·llm·prompt·agent·rag·万方
AI Echoes2 天前
对接自定义向量数据库的配置与使用
数据库·人工智能·python·langchain·prompt·agent
大好人ooo2 天前
Prompt 工程基础方法介绍
prompt
XLYcmy3 天前
智能体大赛 核心功能 惊喜生成”——创新灵感的催化器
数据库·ai·llm·prompt·agent·检索·万方
dingdingfish5 天前
Bash学习 - 第6章:Bash Features,第9节:Controlling the Prompt
prompt·bash·ps1