# 发现与选择智能体

查询工作区中的智能体目录，选择后续调用的智能体。

(sdk-ai-studio-agents-prepare)=
## 准备

1. [配置 SDK 和个人访问令牌](../../../quickstart/ai-studio/sdk.md#sdk-ai-studio-quickstart-configure)。
2. [选择工作区并获取工作区 ID](../../../quickstart/ai-studio/sdk.md#sdk-ai-studio-quickstart-workspaces)。


(sdk-ai-studio-agents-s1)=
## 查询并选择智能体

示例列出目录中的对象类型、所属工作区、ID、名称、状态和可用动作。

:::::{tab-set}
:sync-group: sdk-language

::::{tab-item} Python
:sync: python

```python
import os

import moi_product_sdk as sdk

client = sdk.new_with_personal_access_token(
    os.environ["PRODUCT_API_BASE_URL"], os.environ["PRODUCT_API_KEY"]
)
workspace_id = os.environ["WORKSPACE_ID"]
page = client.agents(workspace_id).list_agent_catalog_cards(
    sdk.with_query_param("limit", "20")
)
print("total:", page.total, "limit:", page.limit, "offset:", page.offset)
for card in page.items:
    print(
        card.kind,
        card.workspace_id,
        card.id,
        card.name,
        card.status,
        list(card.actions),
    )
```

::::

::::{tab-item} Go
:sync: go

```go
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	sdk "github.com/matrixorigin/matrixflow/sdk/go-sdk"
)

func main() {
	client, err := sdk.NewWithPersonalAccessToken(
		os.Getenv("PRODUCT_API_BASE_URL"), os.Getenv("PRODUCT_API_KEY"),
	)
	if err != nil {
		log.Fatal(err)
	}
	defer client.Close()

	page, err := client.Agents(os.Getenv("WORKSPACE_ID")).ListAgentCatalogCards(
		context.Background(), sdk.WithQueryParam("limit", "20"),
	)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("total:", page.GetTotal(), "limit:", page.GetLimit(), "offset:", page.GetOffset())
	for _, card := range page.GetItems() {
		fmt.Println(card.GetKind(), card.GetWorkspaceId(), card.GetId(),
			card.GetName(), card.GetStatus(), card.GetActions())
	}
}
```

::::

:::::

(sdk-ai-studio-agents-s2)=
(sdk-ai-studio-agents-limit)=
(sdk-ai-studio-agents-next)=
从结果中选择智能体条目，保存其 ID 和返回的所属工作区 ID，供后续[调用智能体](调用智能体并跟踪任务.md#sdk-ai-studio-agent-task-send)使用。

示例每页最多返回 20 条，可通过偏移量继续查询。
