Skip to content

Commit e335733

Browse files
authored
fix: automatically determine skills_mode if not set (#487)
1 parent 1db69b1 commit e335733

1 file changed

Lines changed: 58 additions & 1 deletion

File tree

veadk/agent.py

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ class Agent(LlmAgent):
146146

147147
skills: list[str] = Field(default_factory=list)
148148

149-
skills_mode: Literal["skills_sandbox", "aio_sandbox", "local"] = "skills_sandbox"
149+
skills_mode: Optional[Literal["skills_sandbox", "aio_sandbox", "local"]] = None
150150

151151
example_store: Optional[BaseExampleProvider] = None
152152

@@ -337,6 +337,63 @@ def load_skills(self):
337337

338338
skills: Dict[str, Skill] = {}
339339

340+
# Determine skills_mode if not set
341+
if not self.skills_mode:
342+
tool_id = os.getenv("AGENTKIT_TOOL_ID")
343+
if not tool_id:
344+
self.skills_mode = "local"
345+
else:
346+
from veadk.utils.volcengine_sign import ve_request
347+
from veadk.auth.veauth.utils import get_credential_from_vefaas_iam
348+
349+
ak = os.getenv("VOLCENGINE_ACCESS_KEY")
350+
sk = os.getenv("VOLCENGINE_SECRET_KEY")
351+
header = {}
352+
353+
if not (ak and sk):
354+
logger.debug(
355+
"Get AK/SK from environment variables failed. Try to use credential from Iam."
356+
)
357+
credential = get_credential_from_vefaas_iam()
358+
ak = credential.access_key_id
359+
sk = credential.secret_access_key
360+
header = {"X-Security-Token": credential.session_token}
361+
else:
362+
logger.debug("Successfully get AK/SK from environment variables.")
363+
364+
service = os.getenv("AGENTKIT_TOOL_SERVICE_CODE", "agentkit")
365+
region = os.getenv("AGENTKIT_TOOL_REGION", "cn-beijing")
366+
host = service + "." + region + ".volcengineapi.com"
367+
368+
res = ve_request(
369+
request_body={"ToolId": tool_id},
370+
action="GetTool",
371+
ak=ak,
372+
sk=sk,
373+
service=service,
374+
version="2025-10-30",
375+
region=region,
376+
host=host,
377+
header=header,
378+
)
379+
try:
380+
tool_type = res["Result"]["ToolType"]
381+
logger.debug(f"Agentkit tool type={tool_type}")
382+
except KeyError:
383+
tool_type = "unknown"
384+
logger.error(f"Failed to get agentkit tool type: {res}")
385+
386+
if tool_type == "All-in-one":
387+
self.skills_mode = "aio_sandbox"
388+
elif tool_type == "Skill":
389+
self.skills_mode = "skills_sandbox"
390+
else:
391+
self.skills_mode = "skills_sandbox"
392+
logger.warning(
393+
"Custom tool detected, default skills_mode is skills_sandbox; set skills_mode to aio_sandbox if you want to run skills with aio_sandbox"
394+
)
395+
logger.info(f"Determined skills_mode: {self.skills_mode}")
396+
340397
for item in self.skills:
341398
if not item or str(item).strip() == "":
342399
continue

0 commit comments

Comments
 (0)