使用 SDK¶
AI Studio SDK 用于在 Go 或 Python 应用中操作工作区范围内的 AI Studio 资源。调用资源前,先使用个人访问令牌列出可见工作区,取得工作区 ID 后再创建工作区范围的客户端。
全部场景和任务指南见 AI Studio SDK。
准备工作:获取 SDK¶
使用前,请先前往 AI Studio SDK 下载 获取对应语言的离线安装包(Python wheel 或 Go 源码模块),并在本地完成安装与依赖引入。
1. 配置服务地址和个人访问令牌¶
在访问凭据中创建个人访问令牌,并与 AI Studio API 服务地址一起配置为环境变量:
export PRODUCT_API_BASE_URL='https://api.moi.matrixorigin.cn/v5'
export PRODUCT_API_KEY='<你的个人访问令牌>'
公网服务使用上述地址。私有部署请填写部署方提供的完整 AI Studio API 服务地址,包括实际 API 路径前缀。SDK 不会自动补充 /v5 或 /newmoi。
个人访问令牌使用原始值,SDK 将其放入 X-API-Key 请求头。不要添加 Bearer 前缀或使用 Genesis API 地址。以下示例从环境变量读取配置,并显式传给客户端。
2. 获取工作区 ID¶
AI Studio SDK 的功能需要在工作区中使用。调用工作流、知识库、数据或智能体等功能前,先选择目标工作区并获取工作区 ID。
调用工作区列表接口,输出当前身份可访问的工作区:
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)
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())
}
}
从输出中选择目标工作区的 ID;也可以在控制台中复制工作区 ID。将该 ID 保存为环境变量:
export WORKSPACE_ID='<工作区 ID>'
3. 调用示例¶
本示例调用“查看工作流列表”功能。使用前两步准备的调用信息,创建工作区客户端并列出当前身份可以读取的工作流:
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 = client.workspace(os.environ["WORKSPACE_ID"])
result = workspace.workflows().list()
print(result.total)
for workflow in result.workflows:
print(workflow.id, workflow.name, workflow.status)
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)
}
workspace, err := client.Workspace(os.Getenv("WORKSPACE_ID"))
if err != nil {
panic(err)
}
result, err := workspace.Workflows().List(ctx)
if err != nil {
panic(err)
}
fmt.Println(result.GetTotal())
for _, workflow := range result.GetWorkflows() {
fmt.Printf("%s\t%s\t%s\n", workflow.GetId(), workflow.GetName(), workflow.GetStatus())
}
}
调用成功后,程序先输出工作流总数,再输出各工作流的 ID、名称和状态。
现象 |
检查项 |
|---|---|
收到 |
个人访问令牌是否完整,是否误加了 |
收到 |
公网服务地址是否为 |
工作区列表为空或收到 |
当前账号是否具有目标工作区的成员或角色权限。 |