Skip to content

Commit c9dc4e4

Browse files
fix(agent): support instruction provider in agent module (#157)
* fix(agent): support instruction provider in agent module * fix tests for removing useless * add vefaas deploy fail log * fix local dir name
1 parent 3e8e505 commit c9dc4e4

File tree

6 files changed

+36
-64
lines changed

6 files changed

+36
-64
lines changed

docs/docs/agent.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Agent 中主要包括如下属性:
2121
| knowledgebase | KnowledgeBase | 知识库,后端支持本地内存(local)和数据库(opensearch、viking、redis、mysql),通常设置为一个能够检索的向量数据库 |
2222
| long_term_memory | LongTermMemory | 长期记忆,后端支持本地内存(local)和数据库(opensearch、viking、redis、mysql),通常设置为一个能够检索的向量数据库 |
2323
| tracers | list | 追踪器列表,能够定义不同的追踪方式,并在 Agent 执行完毕后将整体 Tracing 信息保存至本地 |
24-
| serve_url | str | Agent 服务主机的 URL,将显示在 Agent Card 中 |
2524

2625
您可以在[火山引擎方舟平台](https://www.volcengine.com/product/ark)选择适合您的大模型。
2726

tests/test_agent.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ def test_agent():
5353
knowledgebase=knowledgebase,
5454
long_term_memory=long_term_memory,
5555
tracers=[tracer],
56-
serve_url="",
5756
)
5857

5958
assert agent.model.model == f"{agent.model_provider}/{agent.model_name}" # type: ignore
@@ -89,8 +88,6 @@ def test_agent_default_values():
8988
assert agent.long_term_memory is None
9089
assert agent.tracers == []
9190

92-
assert agent.serve_url == ""
93-
9491

9592
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
9693
def test_agent_without_knowledgebase():
@@ -208,11 +205,3 @@ def test_agent_custom_name_and_description():
208205

209206
assert agent.name == custom_name
210207
assert agent.description == custom_description
211-
212-
213-
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
214-
def test_agent_serve_url():
215-
serve_url = "http://localhost:8080"
216-
agent = Agent(serve_url=serve_url)
217-
218-
assert agent.serve_url == serve_url

tests/test_agent_card.py

Lines changed: 0 additions & 33 deletions
This file was deleted.

veadk/agent.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414

1515
from __future__ import annotations
1616

17-
from typing import Optional
17+
from typing import Optional, Union
1818

1919
from google.adk.agents import LlmAgent, RunConfig
2020
from google.adk.agents.base_agent import BaseAgent
21-
from google.adk.agents.llm_agent import ToolUnion
21+
from google.adk.agents.llm_agent import InstructionProvider, ToolUnion
2222
from google.adk.agents.run_config import StreamingMode
2323
from google.adk.models.lite_llm import LiteLlm
2424
from google.adk.runners import Runner
@@ -57,8 +57,8 @@ class Agent(LlmAgent):
5757
description: str = DEFAULT_DESCRIPTION
5858
"""The description of the agent. This will be helpful in A2A scenario."""
5959

60-
instruction: str = DEFAULT_INSTRUCTION
61-
"""The instruction for the agent, such as principles of function calling."""
60+
instruction: Union[str, InstructionProvider] = DEFAULT_INSTRUCTION
61+
"""The instruction for the agent."""
6262

6363
model_name: str = Field(default_factory=lambda: settings.model.name)
6464
"""The name of the model for agent running."""
@@ -93,9 +93,6 @@ class Agent(LlmAgent):
9393
tracers: list[BaseTracer] = []
9494
"""The tracers provided to agent."""
9595

96-
serve_url: str = ""
97-
"""The url of agent serving host. Show in agent card."""
98-
9996
def model_post_init(self, __context: Any) -> None:
10097
super().model_post_init(None) # for sub_agents init
10198

veadk/cli/cli_init.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
from typing import Any
1717

1818
import click
19-
from veadk.version import VERSION
2019

20+
from veadk.version import VERSION
2121

2222
warnings.filterwarnings(
2323
"ignore", category=UserWarning, module="pydantic._internal._fields"
@@ -103,7 +103,7 @@ def init(
103103
shutil.rmtree(target_dir_path)
104104

105105
settings = _render_prompts()
106-
settings["local_dir_name"] = local_dir_name.replace("-", "_")
106+
settings["local_dir_name"] = local_dir_name
107107

108108
if not vefaas_template_type:
109109
vefaas_template_type = "template"

veadk/integrations/ve_faas/ve_faas.py

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -195,16 +195,18 @@ def _release_application(self, app_id: str):
195195
time.sleep(10)
196196
status, full_response = self._get_application_status(app_id)
197197

198-
assert status == "deploy_success", (
199-
f"Release application failed. Response: {full_response}"
200-
)
201-
202-
cloud_resource = full_response["Result"]["CloudResource"]
203-
cloud_resource = json.loads(cloud_resource)
204-
205-
url = cloud_resource["framework"]["url"]["system_url"]
206-
207-
return url
198+
if status == "deploy_success":
199+
cloud_resource = full_response["Result"]["CloudResource"]
200+
cloud_resource = json.loads(cloud_resource)
201+
url = cloud_resource["framework"]["url"]["system_url"]
202+
return url
203+
else:
204+
logger.error(f"Release application failed: {full_response}")
205+
logs = self._get_application_logs(app_id=app_id)
206+
log_text = ""
207+
for log_line in logs:
208+
log_text += log_line.strip() + "\n"
209+
raise Exception(f"Release application failed. Logs:\n{log_text}")
208210

209211
def _get_application_status(self, app_id: str):
210212
response = ve_request(
@@ -707,3 +709,21 @@ def deploy_image(
707709
logger.info(f"VeFaaS application {name} with ID {app_id} deployed on {url}.")
708710

709711
return url, app_id, function_id
712+
713+
def _get_application_logs(self, app_id: str) -> list[str]:
714+
response = _ = ve_request(
715+
request_body={"Id": app_id, "Limit": 99999, "RevisionNumber": 1},
716+
action="GetApplicationRevisionLog",
717+
ak=self.ak,
718+
sk=self.sk,
719+
service="vefaas",
720+
version="2021-03-03",
721+
region="cn-beijing",
722+
host="open.volcengineapi.com",
723+
)
724+
725+
try:
726+
logs = response["Result"]["LogLines"]
727+
return logs
728+
except Exception as _:
729+
raise ValueError(f"Get application log failed. Response: {response}")

0 commit comments

Comments
 (0)