# 查看模型后端和端点

查询工作区的大语言模型后端，从结果中选择后端，再读取其接入端点。

(sdk-ai-studio-model-backend-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-model-backend-s1)=
(sdk-ai-studio-model-backend-action-2)=
## 查询后端及端点

示例列出后端 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)
models = workspace.models()
page = models.list_workspace_llm_backends()
print("后端总数:", page.total)
for backend in page.backends:
    print(backend.id, backend.name, list(backend.models))
if not page.backends:
    raise SystemExit("当前没有大语言模型后端")
backend_id = page.backends[0].id
for endpoint in models.list_workspace_llm_endpoints(backend_id):
    print("端点:", endpoint.id, endpoint.address, endpoint.status)
```

::::

::::{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
	models := workspace.Models()
	page, err := models.ListWorkspaceLLMBackends(ctx)
	if err != nil {
		panic(err)
	}
	fmt.Println("后端总数:", page.GetTotal())
	for _, backend := range page.GetBackends() {
		fmt.Println(backend.GetId(), backend.GetName(), backend.GetModels())
	}
	if len(page.GetBackends()) == 0 {
		fmt.Println("当前没有大语言模型后端")
		return
	}
	endpoints, err := models.ListWorkspaceLLMEndpoints(ctx, page.GetBackends()[0].GetId())
	if err != nil {
		panic(err)
	}
	for _, endpoint := range endpoints {
		fmt.Println("端点:", endpoint.GetId(), endpoint.GetAddress(), endpoint.GetStatus())
	}
}
```

::::

:::::

(sdk-ai-studio-model-backend-limit)=
(sdk-ai-studio-model-backend-next)=
后端列表提供 ID、名称及模型清单；端点查询提供所选后端的接入地址和状态。
