Skip to content

使用网页界面

Supported in ADKPython v0.1.0TypeScript v0.2.0Go v0.1.0Java v0.1.0

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

ADK Web Interface

注意:ADK Web 仅用于开发

ADK Web 不适用于生产部署。你应该仅将 ADK Web 用于开发和调试目的。

ADK 网页界面的主要功能包括:

  • 聊天界面:向你的智能体发送消息并实时查看响应
  • 会话管理:创建会话并在会话之间切换
  • 状态检查:在开发过程中查看和修改会话状态
  • 事件历史:检查智能体执行过程中生成的所有事件
  • 可视化构建器:通过拖拽式工作流编辑器和 AI 驱动的助手可视化地设计智能体(仅限 Python,了解更多

启动网页界面

使用以下命令启动 ADK 网页界面:

adk web
npx adk web

在 Go 中,网页界面不是一个独立的 CLI 工具。你需要将启动器直接嵌入到智能体的 main.go 中,并在运行时传递参数。full.NewLauncher() 辅助函数将 Web 服务器、REST API 和 Web UI 打包到一个单独的二进制文件中:

main.go
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())
    }
}

然后通过在命令行传递 webapiwebui 子命令来启动网页界面:

go run agent.go web api webui

web 关键字激活 HTTP 服务器。api 添加 ADK REST API 后端,webui 提供基于浏览器的聊天界面。使用网页界面时需要同时包含 apiwebui;如果你只需要 API 或 UI 中的某一个,可以省略另一个。

请确保更新端口号。

使用 Maven 编译并运行 ADK Web 服务器:

mvn compile exec:java \
 -Dexec.args="--adk.agents.source-dir=src/main/java/agents --server.port=8000"

使用 Gradle 时,build.gradlebuild.gradle.kts 构建文件的 plugins 部分应包含以下 Java 插件:

plugins {
    id('java')
    // other plugins
}
然后,在构建文件的其他位置,顶层创建一个新任务:

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'
}

最后,在命令行运行以下命令:

gradle runADKWebServer

在 Java 中,网页界面和 API 服务器是打包在一起的。

启动后,服务器会在控制台打印访问 URL。在浏览器中打开它即可使用网页界面:

+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://localhost:8000.                         |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://localhost:8000.                         |
+-----------------------------------------------------------------------------+
2025/01/01 00:00:00 Starting the web server: &{port:8080 ...}
2025/01/01 00:00:00 Web servers starts on http://localhost:8080
2025/01/01 00:00:00        webui:  you can access API using http://localhost:8080/ui/
2025/01/01 00:00:00        api:  you can access API using http://localhost:8080/api
+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://localhost:8000.                         |
+-----------------------------------------------------------------------------+

常用选项

以下是 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 --port 3000 --session_service_uri "sqlite:///sessions.db"

以下是 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 --port 3000 --session_service_uri "sqlite:///sessions.db"

Go 的参数与 Python/TypeScript 不同

Go 的 Web 启动器使用的参数与 Python 或 TypeScript 中的 adk web 不同。--host--session_service_uri--artifact_service_uri--reload 等选项不可用。会话和制品服务是在 Go 代码中构建 launcher.Config 时配置的,而不是通过命令行参数。

参数分散在 webapiwebui 子命令中。在相关子命令关键字之后传递参数。

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 前缀:

go run agent.go web -port 9090 api -path_prefix /myapi webui -api_server_address http://localhost:9090/myapi