# 读取资源清单

分别读取工作区目录、工作流、计算资源和知识库，输出资源标识以供选择。

(sdk-ai-studio-assets-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-assets-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"]
workspace = client.workspace(workspace_id)
catalogs = workspace.catalog().list()
for item in catalogs.list:
    print("Catalog:", item.id, item.name)
workflows = workspace.workflows().list()
for item in workflows.workflows:
    print("工作流:", item.id, item.name, item.status)
for item in workspace.compute().list():
    print("计算资源:", item.id, item.name)
knowledge = workspace.knowledge().list()
for item in knowledge.items:
    print("知识库:", item.id, item.name)
print("知识库下一页标记:", knowledge.next_page_token)
```

::::

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

```go
package main

import (
	"context"
	"fmt"
	"os"

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

func main() {
	ctx := context.Background()
	client, err := sdk.NewWithPersonalAccessToken(os.Getenv("PRODUCT_API_BASE_URL"), os.Getenv("PRODUCT_API_KEY"))
	if err != nil {
		panic(err)
	}
	workspaceID := os.Getenv("WORKSPACE_ID")
	workspace, err := client.Workspace(workspaceID)
	if err != nil {
		panic(err)
	}
	_ = workspace
	catalogs, err := workspace.Catalog().List(ctx)
	if err != nil {
		panic(err)
	}
	for _, item := range catalogs.GetList() {
		fmt.Println("Catalog:", item.GetId(), item.GetName())
	}
	workflows, err := workspace.Workflows().List(ctx)
	if err != nil {
		panic(err)
	}
	for _, item := range workflows.GetWorkflows() {
		fmt.Println("工作流:", item.GetId(), item.GetName(), item.GetStatus())
	}
	compute, err := workspace.Compute().List(ctx)
	if err != nil {
		panic(err)
	}
	for _, item := range compute {
		fmt.Println("计算资源:", item.GetId(), item.GetName())
	}
	knowledge, err := workspace.Knowledge().List(ctx)
	if err != nil {
		panic(err)
	}
	for _, item := range knowledge.GetItems() {
		fmt.Println("知识库:", item.GetId(), item.GetName())
	}
	fmt.Println("知识库下一页标记:", knowledge.GetNextPageToken())
}
```

::::

:::::

(sdk-ai-studio-assets-limit)=
(sdk-ai-studio-assets-next)=
输出按资源类型列出 ID 和名称。各清单分别分页，示例展示当前返回的一页资源。
