Skip to content

Commit b7583d8

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents 05982b8 + 7758ea5 commit b7583d8

File tree

27 files changed

+635
-48
lines changed

27 files changed

+635
-48
lines changed

assets/images/logo.png

-80.5 KB
Loading

docs/content/9.deploy/1.from-scratch.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,19 @@ Run python `deploy.py` for deployment on Volcengine FaaS platform.
3131
它会提示你输入如下几个参数:
3232

3333
- 本地项目名称(即项目的本地目录名称)
34-
- VeFaaS应用名称(不可带下划线)
35-
- 火山引擎网关实例名称(可选)
36-
- 火山引擎网关服务名称(可选)
37-
- 火山引擎网关Upstream名称(可选)
34+
- 火山引擎函数服务应用名称(不可带下划线)
35+
- 火山引擎API网关实例名称(可选)
36+
- 火山引擎API网关服务名称(可选)
37+
- 火山引擎API网关Upstream名称(可选)
3838
- 部署模式
3939
1. A2A / MCP Server
4040
2. VeADK Web
41+
- 认证方式
42+
1. 不认证
43+
2. API key(仅限A2A / MCP Server的部署模式)
44+
3. OAuth2
45+
- 火山引擎Identity用户池名称(可选)
46+
- 火山引擎Identity客户端名称(可选,仅限VeADK Web的部署模式)
4147

4248
生成后的项目结构如下:
4349

docs/content/9.deploy/2.from-proj.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@ navigation:
2121
| - | - | - |
2222
| `--access-key` | 字符串 | 火山引擎AK |
2323
| `--secret-key` | 字符串 | 火山引擎SK |
24-
| `--vefaas-app-name` | 字符串 | 火山引擎 VeFaaS 平台应用名称 |
25-
| `--veapig-instance-name` | 字符串 | 火山引擎 APIG 实例名称 |
26-
| `--veapig-service-name` | 字符串 | 火山引擎 APIG 服务名称 |
27-
| `--veapig-upstream-name` | 字符串 | 火山引擎 APIG Upstream 名称 |
24+
| `--vefaas-app-name` | 字符串 | 火山引擎函数服务应用名称 |
25+
| `--veapig-instance-name` | 字符串 | 火山引擎 API 网关实例名称 |
26+
| `--veapig-service-name` | 字符串 | 火山引擎 API 网关服务名称 |
27+
| `--veapig-upstream-name` | 字符串 | 火山引擎 API 网关 Upstream 名称 |
2828
| `--short-term-memory-backend` | `local` \| `mysql` | 短期记忆后端 |
2929
| `--use-adk-web` | FLAG | 设置后将会在云端启动 web,否则为 A2A / MCP 模式 |
3030
| `--path` | 字符串 | 本地项目路径,默认为当前目录 |
31+
| `--auth-method` | `none` \| `api-key` \| `oauth2` | 认证方式 |
32+
| `--user-pool-name` | 字符串 | 火山引擎 Identity 用户池名称 |
33+
| `--client-name` | 字符串 | 火山引擎 Identity 客户端名称 |

docs/content/9.deploy/3.from-code.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,14 @@ cloud_app = engine.deploy(...)
2828
| 参数名称 | 类型 | 说明 |
2929
| --- | --- | --- |
3030
| path | str | 本地Agent项目路径 |
31-
| application_name | str | 云应用名称 |
32-
| gateway_name | str | 火山引擎网关实例名称 |
33-
| gateway_service_name | str | 火山引擎网关服务名称 |
34-
| gateway_upstream_name | str | 火山引擎网关Upstream名称 |
31+
| application_name | str | 函数服务应用名称 |
32+
| gateway_name | str | 火山引擎 API 网关实例名称 |
33+
| gateway_service_name | str | 火山引擎 API 网关服务名称 |
34+
| gateway_upstream_name | str | 火山引擎 API 网关Upstream名称 |
3535
| use_adk_web | bool | 是否在云端使用VeADK Web / Google Web |
36+
| auth_method | str | 认证方式 |
37+
| identity_user_pool_name | str | 火山引擎 Identity 用户池名称 |
38+
| identity_client_name | str | 火山引擎 Identity 客户端名称 |
3639

3740
### Cloud App
3841

pyproject.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "veadk-python"
3-
version = "0.2.22"
3+
version = "0.2.23"
44
description = "Volcengine agent development kit, integrations with Volcengine cloud services."
55
readme = "README.md"
66
requires-python = ">=3.10"
@@ -22,7 +22,7 @@ dependencies = [
2222
"opentelemetry-instrumentation-logging>=0.56b0",
2323
"wrapt>=1.17.2", # For patching built-in functions
2424
"openai<1.100", # For fix https://github.com/BerriAI/litellm/issues/13710
25-
"volcengine-python-sdk>=4.0.18", # For Volcengine API
25+
"volcengine-python-sdk>=4.0.33", # For Volcengine API
2626
"volcengine>=1.0.193", # For Volcengine sign
2727
"agent-pilot-sdk>=0.1.2", # Prompt optimization by Volcengine AgentPilot/PromptPilot toolkits
2828
"fastmcp>=2.11.3", # For running MCP
@@ -33,7 +33,9 @@ dependencies = [
3333
"llama-index-llms-openai-like>=0.5.1",
3434
"llama-index-vector-stores-opensearch>=0.6.1",
3535
"psycopg2-binary>=2.9.10", # For PostgreSQL database (short term memory)
36+
"asyncpg>=0.29.0", # For async PostgreSQL database (short term memory)
3637
"pymysql>=1.1.1", # For MySQL database (short term memory)
38+
"aiomysql>=0.3.2", # For async MySQL database (short term memory)
3739
"opensearch-py==2.8.0",
3840
"filetype>=1.2.0",
3941
]

tests/test_cloud.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ async def test_cloud():
6161
mock_vefaas_service.find_app_id_by_name.return_value = "app-123"
6262
mock_vefaas_service.delete.return_value = None
6363

64+
mock_vefaas_service.get_application_route.return_value = (
65+
"gw-123",
66+
"svc-456",
67+
"route-789",
68+
)
69+
6470
# Test CloudAgentEngine creation and deploy functionality
6571
engine = CloudAgentEngine()
6672

veadk/agent.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
from veadk.tracing.base_tracer import BaseTracer
4949
from veadk.utils.logger import get_logger
5050
from veadk.utils.patches import patch_asyncio, patch_tracer
51-
from veadk.tools.builtin_tools.agent_authorization import check_agent_authorization
5251
from veadk.version import VERSION
5352

5453
patch_tracer()
@@ -188,6 +187,10 @@ def model_post_init(self, __context: Any) -> None:
188187
self.tools.append(load_memory)
189188

190189
if self.enable_authz:
190+
from veadk.tools.builtin_tools.agent_authorization import (
191+
check_agent_authorization,
192+
)
193+
191194
if self.before_agent_callback:
192195
if isinstance(self.before_agent_callback, list):
193196
self.before_agent_callback.append(check_agent_authorization)

veadk/cli/cli_deploy.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,22 @@
5050
help="Backend for short-term memory",
5151
)
5252
@click.option("--use-adk-web", is_flag=True, help="Whether to use ADK Web")
53+
@click.option(
54+
"--auth-method",
55+
default="none",
56+
type=click.Choice(["none", "api-key", "oauth2"]),
57+
help="=Authentication method for agent",
58+
)
59+
@click.option(
60+
"--user-pool-name",
61+
default="",
62+
help="Expected Volcengine Identity user pool name",
63+
)
64+
@click.option(
65+
"--client-name",
66+
default="",
67+
help="Expected Volcengine Identity client name",
68+
)
5369
@click.option("--path", default=".", help="Local project path")
5470
def deploy(
5571
volcengine_access_key: str,
@@ -60,6 +76,9 @@ def deploy(
6076
veapig_upstream_name: str,
6177
short_term_memory_backend: str,
6278
use_adk_web: bool,
79+
auth_method: str,
80+
user_pool_name: str,
81+
client_name: str,
6382
path: str,
6483
) -> None:
6584
"""Deploy a user project to Volcengine FaaS application.
@@ -90,6 +109,10 @@ def deploy(
90109
short_term_memory_backend: Backend type for short-term memory storage.
91110
Choices are 'local' or 'mysql'
92111
use_adk_web: Flag to enable ADK Web interface for the deployed agent
112+
auth_method: Authentication for the agent.
113+
Choices are 'none', 'api-key' or 'oauth2'.
114+
veidentity_user_pool_name: Optional Volcengine Identity user pool name
115+
veidentity_client_name: Optional Volcengine Identity client name
93116
path: Local directory path containing the VeADK project to deploy
94117
95118
Note:
@@ -131,6 +154,9 @@ def deploy(
131154
"veapig_service_name": veapig_service_name,
132155
"veapig_upstream_name": veapig_upstream_name,
133156
"use_adk_web": use_adk_web,
157+
"auth_method": auth_method,
158+
"veidentity_user_pool_name": user_pool_name,
159+
"veidentity_client_name": client_name,
134160
"veadk_version": VERSION,
135161
}
136162

veadk/cli/cli_init.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,49 @@ def _render_prompts() -> dict[str, Any]:
6161
deploy_mode = click.prompt(
6262
"Enter your choice", type=click.Choice(deploy_mode_options.keys())
6363
)
64+
use_adk_web = deploy_mode == "2"
65+
66+
auth_method_options = {
67+
"1": "None",
68+
"2": "API key",
69+
"3": "OAuth2",
70+
}
71+
auth_methods = {
72+
"1": "none",
73+
"2": "api-key",
74+
"3": "oauth2",
75+
}
76+
77+
click.echo("Choose an authentication method:")
78+
for key, value in auth_method_options.items():
79+
click.echo(f" {key}. {value}")
80+
81+
auth_method_idx = click.prompt(
82+
"Enter your choice", type=click.Choice(auth_method_options.keys())
83+
)
84+
auth_method = auth_methods[auth_method_idx]
85+
86+
veidentity_user_pool_name = ""
87+
veidentity_client_name = ""
88+
if auth_method == "oauth2":
89+
veidentity_user_pool_name = click.prompt(
90+
"Volcengine Identity user pool name", default="", show_default=True
91+
)
92+
93+
if use_adk_web:
94+
veidentity_client_name = click.prompt(
95+
"Volcengine Identity client name", default="", show_default=True
96+
)
6497

6598
return {
6699
"vefaas_application_name": vefaas_application_name,
67100
"veapig_instance_name": veapig_instance_name,
68101
"veapig_service_name": veapig_service_name,
69102
"veapig_upstream_name": veapig_upstream_name,
70-
"use_adk_web": deploy_mode == "2",
103+
"use_adk_web": use_adk_web,
104+
"auth_method": auth_method,
105+
"veidentity_user_pool_name": veidentity_user_pool_name,
106+
"veidentity_client_name": veidentity_client_name,
71107
"veadk_version": VERSION,
72108
}
73109

0 commit comments

Comments
 (0)