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
相关推荐
轩脉刃7 小时前
prompt 越短,说明智能体越智能
prompt
Java后端的Ai之路10 小时前
LangSmith与Prompt Ops:从概念到实践的全面指南
人工智能·langchain·prompt·aigc·langsmith
岁岁种桃花儿15 小时前
AI超级智能开发系列从入门到上天第一篇:Prompt工程
ai·prompt
啦啦啦_999917 小时前
4. AI面试题之 Prompt
java·prompt
芥子沫20 小时前
提示词管理工具推荐prompt-manage,Docker一键部署和使用指南
docker·容器·prompt·提示词
1941s1 天前
02-LangChain 框架入门:模型抽象与 Prompt 模板
人工智能·langchain·prompt
Lvan的前端笔记2 天前
提示词Prompt技巧
prompt
1941s2 天前
01-LLM 基础与提示词工程:从 API 调用到 Prompt 优化技巧
人工智能·python·prompt
AC赳赳老秦2 天前
DeepSeek助力国产化AI落地:政务/企业场景下的国产算力适配避坑指南
大数据·人工智能·python·prompt·政务·ai-native·deepseek
带娃的IT创业者2 天前
Prompt Engineering 进阶:让 AI 写出人类味道(完整指南)
人工智能·大模型·llm·prompt·写作技巧·ai 教学