# 使用 SDK

AI Studio SDK 用于在 Go 或 Python 应用中操作工作区范围内的 AI Studio 资源。完成本页后，你将使用个人访问令牌列出可见工作区，并取得后续任务所需的工作区 ID。

全部场景和任务指南见 [AI Studio SDK](../../sdk/ai-studio/index.md)。

## 1. 创建客户端与认证

```bash
export PRODUCT_API_BASE_URL='<以 /newmoi 结尾的 AI Studio API 服务地址>'
export PRODUCT_API_KEY='<你的个人访问令牌>'
```

SDK 不会自动添加 `/newmoi`。个人访问令牌按原始值传入，客户端会通过 `X-API-Key` 发送。不要添加 `Bearer` 前缀，也不要使用 Genesis API 地址。

## 2. 列出可见工作区

:::::{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"],
)
result = client.workspaces().list()
for workspace in result.workspaces:
    print(workspace.id, workspace.name)
```

::::

::::{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)
	}
	result, err := client.Workspaces().List(ctx)
	if err != nil {
		panic(err)
	}
	for _, workspace := range result.GetWorkspaces() {
		fmt.Printf("%s\t%s\n", workspace.GetId(), workspace.GetName())
	}
}
```

::::

:::::

列表成功返回表示服务地址和个人访问令牌可以用于工作区发现。

## 3. 进入工作区

选择一个返回的工作区 ID，再使用 Python 的 `client.workspace(workspace_id)` 或 Go 的 `client.Workspace(workspaceID)` 进入工作区作用域。这个绑定不访问服务端。不要用可能创建工作区的 `ensure_workspace` 或 `EnsureWorkspace` 验证连接。

如果收到 `401`，检查令牌是否完整且未加 `Bearer` 前缀；如果收到 `404` 或网页内容，检查服务地址是否包含 `/newmoi`。如果列表为空或收到 `403`，确认当前账号是否具有工作区成员或角色权限。

## 下一步

- [按场景使用 AI Studio SDK](../../sdk/ai-studio/index.md)
