如何通过API获取watsonx Assistant中所有Action的ID与标题?
拉取watsonx Assistant中Action的ID和标题的实现方法
核心思路
调用watsonx Assistant的List Actions API,直接获取指定技能下所有Action的元数据,从中提取action_id和title字段即可。
步骤说明
准备必要参数
instance_id:watsonx Assistant实例ID,可在IBM Cloud控制台的实例详情页获取skill_id:目标技能的ID,在watsonx Assistant界面的技能设置中查看api_key:拥有watsonx Assistant访问权限的IBM Cloud API密钥region:实例所在地区(如us-south、eu-gb、au-syd等)
API调用细节
- 请求方法:
GET - 接口地址:
https://api.{region}.assistant.watson.cloud.ibm.com/instances/{instance_id}/v2/skills/{skill_id}/actions - 认证方式:Basic Auth(用户名填
apikey,密码填你的API密钥) - 请求头:需指定
Accept: application/json
- 请求方法:
提取目标数据
接口返回的JSON响应中,actions数组包含所有Action对象,每个对象的action_id和title字段即为所需内容。
示例代码
CURL 示例
curl -X GET "https://api.us-south.assistant.watson.cloud.ibm.com/instances/<你的实例ID>/v2/skills/<你的技能ID>/actions" \ -u "apikey:<你的API密钥>" \ -H "Accept: application/json"
Python 示例
import requests # 替换为你的实际参数 instance_id = "your-instance-id" skill_id = "your-skill-id" api_key = "your-api-key" region = "us-south" url = f"https://api.{region}.assistant.watson.cloud.ibm.com/instances/{instance_id}/v2/skills/{skill_id}/actions" response = requests.get( url, auth=("apikey", api_key), headers={"Accept": "application/json"} ) if response.status_code == 200: actions = response.json().get("actions", []) # 遍历输出每个Action的ID和标题 for idx, action in enumerate(actions, 1): print(f"Action {idx}: ID={action['action_id']}, 标题={action['title']}") else: print(f"请求失败,状态码: {response.status_code},错误信息: {response.text}")
注意事项
- 分页处理:若技能中Action数量较多,接口会返回分页数据,可通过响应里的
pagination.next_url字段循环请求,直至获取全部Action - 权限验证:确保API密钥拥有
Assistant Manager或Assistant Editor角色权限,否则会返回权限错误 - 地区适配:根据实例所在地区替换接口地址的
region部分,不同地区的域名前缀不同
内容的提问来源于stack exchange,提问作者Simon O'Doherty
相关产品推荐
相关产品推荐

