今天主要学习了一些AGENTSCOPE里的权限管理,还是比较复杂的。

image.png
操练代码
from dotenv import load_dotenv
import asyncio
import os
from agentscope.model import DeepSeekChatModel
from agentscope.credential import DeepSeekCredential
from agentscope.formatter import OpenAIMultiAgentFormatter
from agentscope.message import UserMsg
from agentscope.model import FinishedReason
from pydantic import BaseModel
from agentscope import agent, model
from agentscope.agent import Agent
from agentscope.state import AgentState
from agentscope.event import UserConfirmResultEvent
from agentscope.permission import (
PermissionContext, PermissionMode,
PermissionRule, PermissionBehavior)
load_dotenv(verbose=True)
api_key=os.getenv("DEEPSEEK_API_KEY")
model = DeepSeekChatModel(
credential=DeepSeekCredential(api_key=api_key),
model='deepseek-v4-flash',
stream=True,
formatter=OpenAIMultiAgentFormatter(),
)
msgs = [UserMsg(name="user", content="在本地电脑的D盘testcode目录下,新建一个python的django项目骨架目录和文件。")]
agent = Agent(
name='my_agent',
system_prompt='你是一个操作系统运维专家。',
model=model,
state=AgentState(
permission_context=PermissionContext(
mode=PermissionMode.DEFAULT,
allow_rules={
'Bash': [PermissionRule(tool_name='Bash', rule_content='npm run:*',
behavior=PermissionBehavior.ALLOW, source='userSettings'
)],
'Write': [PermissionRule(
tool_name='Write',rule_content='src/**',
behavior=PermissionBehavior.ALLOW, source='userSettings'
)]
},
deny_rules={
'Bash': [PermissionRule(tool_name='Bash', rule_content='rm:*',
behavior=PermissionBehavior.DENY, source='userSettings'
)],
}
)
),
)
result = UserConfirmResultEvent(
confirmed=True,
rules=[suggested_rule],
)