目录
yaozheng-fang

feat(web-ui): SSO login + web UI polish + docs (#572)

  • feat(a2ui): add VeIdentity SSO to the web UI
  • veadk frontend: optional –oauth2-user-pool / –oauth2-user-pool-client / –oauth2-redirect-uri flags wire VeIdentity OAuth2 (setup_oauth2); the API is protected while the SPA shell is served so the app can show its own login page.
  • frontend: identity.ts resolves the signed-in user via /oauth2/userinfo (sub), a LobeHub-style login page when unauthenticated, ADK user_id now comes from the SSO identity (url-encoded in API paths), sidebar shows the user + logout. No SSO configured falls back to web-user for local dev.
  • feat(a2ui): config-driven SSO providers + chat UI polish

SSO providers:

  • veadk frontend: –oauth2-provider / –oauth2-provider-label flags; expose the configured provider(s) on GET /web/auth-config (unauthenticated). Exempt the SPA shell (/, /assets, /web/auth-config) from the OAuth2 middleware so the app loads and renders its own login page instead of being bounced to the IdP.
  • login page renders a button per configured provider; falls back to a single login button.

UI polish:

  • messages (user + assistant) render Markdown (GFM + code highlight) at ~14px.
  • sidebar right border is now dashed.
  • motion-based entrance/press animations (honors prefers-reduced-motion).
  • tool-call block restyled to match the janus-ee extension (status dot, name, collapsible 参数/返回 sections).

Allowlist veadk/webui (built minified bundle) from gitleaks scanning.

  • feat(web-ui): SSO login, local username, lazy sessions, UI polish, docs
  • Login page: config-driven provider buttons for SSO; a username input for the no-SSO case (the chosen name becomes the ADK user_id, stored locally).
  • veadk frontend: –oauth2-provider/-label and pool/client UID flags (default from OAUTH2_USER_POOL_ID / OAUTH2_USER_POOL_CLIENT_ID); exempt the SPA shell + /web/auth-config from the OAuth2 middleware so the app shows its own login page; local logout (no IdP post-logout redirect needed).
  • Sessions are created lazily on the first message (not on page load); the sidebar refreshes on new-chat/delete; a loading overlay shows while opening a session.
  • UI polish: Markdown messages, dashed sidebar border, motion animations, janus-ee-style tool blocks, a two-pane trace viewer (span tree + detail), and a persistent copy button on assistant messages.
  • Generic (non-A2UI) UI copy.
  • Fix: identity_client.get_user_pool passed uid= but the SDK request expects user_pool_uid= (broke SSO-by-UID).
  • Docs: web-ui Authentication section (zh/en).
  • feat(web-ui): default agents-dir to cwd (adk-style), generic README, dev proxy
  • veadk frontend: –agents-dir defaults to “.” so you launch from the parent folder of your agent directories (like adk web) and every agent.py app populates the dropdown.
  • frontend README rewritten as a general web UI (chat / sessions / tracing / auth), with A2UI as one feature rather than the focus.
  • vite dev proxy also forwards /oauth2, /web, /debug for SSO/trace in dev.
1天前546次提交

Volcengine Agent Development Kit Logo

Volcengine Agent Development Kit

License Deepwiki

An open-source kit for agent development, integrated the powerful capabilities of Volcengine.

For more details, see our documents.

A tutorial is available by Jupyter Notebook, or open it in Google Colab directly.

Installation

From PyPI

pip install veadk-python

# install extensions
pip install veadk-python[extensions]

Build from source

We use uv to build this project (how-to-install-uv).

git clone ... # clone repo first

cd veadk-python

# create a virtual environment with python 3.12
uv venv --python 3.12

# only install necessary requirements
uv sync

# or, install extra requirements
# uv sync --extra database
# uv sync --extra eval
# uv sync --extra cli

# or, directly install all requirements
# uv sync --all-extras

# install veadk-python with editable mode
uv pip install -e .

Configuration

We recommand you to create a config.yaml file in the root directory of your own project, VeADK is able to read it automatically. For running a minimal agent, you just need to set the following configs in your config.yaml file:

model:
  agent:
    provider: openai
    name: doubao-seed-1-6-250615
    api_base: https://ark.cn-beijing.volces.com/api/v3/
    api_key: # <-- set your Volcengine ARK api key here

You can refer to the config instructions for more details.

Have a try

Enjoy a minimal agent from VeADK:

from veadk import Agent
import asyncio

agent = Agent()

res = asyncio.run(agent.run("hello!"))
print(res)

Feishu bot channel

VeADK now provides veadk.extensions.FeishuChannelExtension for bridging a Feishu bot with a Runner. It maps union_id to user_id, and thread_id / chat_id to session_id, so VeADK memory and tracing can work directly in Feishu conversations.

from veadk import Agent, Runner
from veadk.extensions import FeishuChannelExtension

agent = Agent()
runner = Runner(agent=agent, app_name="feishu_demo")
channel = FeishuChannelExtension(runner=runner)

Configure credentials with TOOL_FEISHU_CHANNEL_APP_ID and TOOL_FEISHU_CHANNEL_APP_SECRET, or in config.yaml under tool.feishu_channel.

A2UI (agent-driven UI)

VeADK integrates Google’s A2UI, letting an agent reply with declarative UI (cards, rows, forms) instead of plain text. A client renders the UI with native components. Enable it with a single flag (requires the optional a2ui-agent-sdk dependency: pip install veadk-python[a2ui]):

from veadk import Agent

agent = Agent(enable_a2ui=True)  # uses the bundled "basic" component catalog

A bundled React web UI renders A2UI over the standard ADK API server. The built UI ships inside the package (veadk/webui, produced by npm run build), so installed users can launch it directly:

veadk frontend --agents-dir examples           # serve UI + API on http://127.0.0.1:8000

To rebuild the UI from source (output goes to veadk/webui, which is committed so it ships with the wheel):

cd frontend && npm install && npm run build

Point the agent at a custom component catalog (relative paths resolve against the agent’s directory; absolute paths work too). With no argument it auto-discovers a catalog.json next to the agent, falling back to the bundled basic catalog:

Agent(enable_a2ui=True, a2ui_catalog="catalog.json")  # beside the agent

Enterprises extend the component set in two matching halves: a backend catalog (a catalog.json or a veadk.a2ui.BaseA2UICatalog subclass) and a frontend renderer directory (frontend/src/a2ui/components/<Name>/). See frontend/README.md.

Command line tools

VeADK provides several useful command line tools for faster deployment and optimization, such as:

  • veadk deploy: deploy your project to Volcengine VeFaaS platform (you can use veadk init to init a demo project first)
  • veadk prompt: otpimize the system prompt of your agent by PromptPilot
  • veadk frontend: serve the A2UI web UI together with the ADK agent API server

Contribution

Before making your contribution to our repository, please install and config the pre-commit linter first.

pip install pre-commit
pre-commit install

Before commit or push your changes, please make sure the unittests are passed ,otherwise your PR will be rejected by CI/CD workflow. Running the unittests by:

pytest -n 16

Security and privacy

This project takes security seriously. For vulnerability reporting and supported versions, see SECURITY.md

Contact with us

Join our discussion group by scanning the QR code below:

Volcengine Agent Development Kit Logo

License

This project is licensed under the Apache 2.0 License.

    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号