使用网页界面¶
ADK 网页界面让你可以直接在浏览器中测试你的智能体。这个工具提供了一种简单的方式来交互式地开发和调试你的智能体。

注意:ADK Web 仅用于开发
ADK Web 不适用于生产部署。你应该仅将 ADK Web 用于开发和调试目的。
ADK 网页界面的主要功能包括:
- 聊天界面:向你的智能体发送消息并实时查看响应
- 会话管理:创建会话并在会话之间切换
- 状态检查:在开发过程中查看和修改会话状态
- 事件历史:检查智能体执行过程中生成的所有事件
- 可视化构建器:通过拖拽式工作流编辑器和 AI 驱动的助手可视化地设计智能体(仅限 Python,了解更多)
启动网页界面¶
使用以下命令启动 ADK 网页界面:
在 Go 中,网页界面不是一个独立的 CLI 工具。你需要将启动器直接嵌入到智能体的 main.go 中,并在运行时传递参数。full.NewLauncher() 辅助函数将 Web 服务器、REST API 和 Web UI 打包到一个单独的二进制文件中:
import (
"google.golang.org/adk/v2/cmd/launcher"
"google.golang.org/adk/v2/cmd/launcher/full"
)
func main() {
// ... 构建你的智能体和配置 ...
l := full.NewLauncher()
if err := l.Execute(ctx, config, os.Args[1:]); err != nil {
log.Fatalf("Run failed: %v\n\n%s", err, l.CommandLineSyntax())
}
}
然后通过在命令行传递 web、api 和 webui 子命令来启动网页界面:
web 关键字激活 HTTP 服务器。api 添加 ADK REST API 后端,webui 提供基于浏览器的聊天界面。使用网页界面时需要同时包含 api 和 webui;如果你只需要 API 或 UI 中的某一个,可以省略另一个。
请确保更新端口号。
使用 Maven 编译并运行 ADK Web 服务器:
使用 Gradle 时,build.gradle 或 build.gradle.kts 构建文件的 plugins 部分应包含以下 Java 插件:
tasks.register('runADKWebServer', JavaExec) {
dependsOn classes
classpath = sourceSets.main.runtimeClasspath
mainClass = 'com.google.adk.web.AdkWebServer'
args '--adk.agents.source-dir=src/main/java/agents', '--server.port=8000'
}
最后,在命令行运行以下命令:
在 Java 中,网页界面和 API 服务器是打包在一起的。
启动后,服务器会在控制台打印访问 URL。在浏览器中打开它即可使用网页界面:
常用选项¶
以下是 adk web 命令的一些常用选项。运行 adk web --help 查看所有可用选项。
| 选项 | 描述 | 默认值 |
|---|---|---|
--port |
运行服务器的端口 | 8000 |
--host |
主机绑定地址 | 127.0.0.1 |
--session_service_uri |
自定义会话存储 URI | 内存中 |
--artifact_service_uri |
自定义制品存储 URI | 本地 .adk/artifacts |
--reload/--no-reload |
启用代码更改时自动重载 | true |
例如:
以下是 adk web 命令的一些常用选项。运行 adk web --help 查看所有可用选项。
| 选项 | 描述 | 默认值 |
|---|---|---|
--port |
运行服务器的端口 | 8000 |
--host |
主机绑定地址 | 127.0.0.1 |
--session_service_uri |
自定义会话存储 URI | 内存中 |
--artifact_service_uri |
自定义制品存储 URI | 本地 .adk/artifacts |
--reload/--no-reload |
启用代码更改时自动重载 | true |
例如:
Go 的参数与 Python/TypeScript 不同
Go 的 Web 启动器使用的参数与 Python 或 TypeScript 中的 adk web 不同。--host、--session_service_uri、--artifact_service_uri 和 --reload 等选项不可用。会话和制品服务是在 Go 代码中构建 launcher.Config 时配置的,而不是通过命令行参数。
参数分散在 web、api 和 webui 子命令中。在相关子命令关键字之后传递参数。
web 子命令参数(在 web 之后直接传递):
| 参数 | 描述 | 默认值 |
|---|---|---|
-port |
HTTP 服务器端口 | 8080 |
-write-timeout |
HTTP 响应写入超时 | 15s |
-read-timeout |
HTTP 请求读取超时 | 15s |
-idle-timeout |
保活空闲连接超时 | 60s |
-shutdown-timeout |
优雅关闭等待时间 | 15s |
-otel_to_cloud |
将 OpenTelemetry 数据导出到 GCP | false |
api 子命令参数(在 api 之后传递):
| 参数 | 描述 | 默认值 |
|---|---|---|
-webui_address |
CORS 允许的 WebUI 来源 | localhost:8080 |
-path_prefix |
REST API 的 URL 路径前缀 | /api |
-sse-write-timeout |
SSE(流式)响应超时 | 120s |
-trace_capacity |
内存中保留的最大追踪数 | 10000 |
webui 子命令参数(在 webui 之后传递):
| 参数 | 描述 | 默认值 |
|---|---|---|
-api_server_address |
从浏览器访问的 REST API URL | http://localhost:8080/api |
例如,要在端口 9090 上运行并使用自定义 API 前缀: