From c896d01debe6b5b77b0d912955aa8b1ba15608bd Mon Sep 17 00:00:00 2001 From: "hanzhi.421" Date: Wed, 6 Aug 2025 14:29:04 +0800 Subject: [PATCH 1/2] fix(vefaas) change tracer callback --- veadk/agent.py | 18 ++---- veadk/cli/services/vefaas/template/README.md | 16 +++--- .../vefaas/template/config.yaml.example | 9 +++ veadk/cli/services/vefaas/template/deploy.py | 24 +++++--- .../template/src/{config.py => agent.py} | 35 ------------ veadk/cli/services/vefaas/template/src/app.py | 45 +++++++++++++-- veadk/cli/services/vefaas/template/src/run.sh | 21 ++++++- .../vefaas/template/src/studio_agent.py | 47 ++++++++++++++++ veadk/cloud/cloud_agent_engine.py | 4 +- veadk/cloud/template/agent.py | 19 +++++++ veadk/cloud/template/app.py | 46 ++++++++++++++-- veadk/cloud/template/config.py | 55 ------------------- veadk/cloud/template/run.sh | 21 ++++++- veadk/cloud/template/studio_agent.py | 47 ++++++++++++++++ 14 files changed, 273 insertions(+), 134 deletions(-) rename veadk/cli/services/vefaas/template/src/{config.py => agent.py} (50%) create mode 100644 veadk/cli/services/vefaas/template/src/studio_agent.py create mode 100644 veadk/cloud/template/agent.py delete mode 100644 veadk/cloud/template/config.py create mode 100644 veadk/cloud/template/studio_agent.py diff --git a/veadk/agent.py b/veadk/agent.py index 93cb98e0..b7c09a5e 100644 --- a/veadk/agent.py +++ b/veadk/agent.py @@ -114,24 +114,18 @@ def model_post_init(self, __context: Any) -> None: self.tools.append(load_memory) - self.before_model_callback = [] - self.after_model_callback = [] - self.update_tracers_callback() + if self.tracers: + self.before_model_callback = [] + self.after_model_callback = [] + for tracer in self.tracers: + self.before_model_callback.append(tracer.llm_metrics_hook) + self.after_model_callback.append(tracer.token_metrics_hook) logger.info(f"Agent `{self.name}` init done.") logger.debug( f"Agent: {self.model_dump(include={'name', 'model_name', 'model_api_base', 'tools', 'serve_url'})}" ) - def update_tracers_callback(self) -> None: - """Update tracer callbacks with tracers.""" - for tracer in self.tracers: - # Add tracer callbacks if not already added - if tracer.llm_metrics_hook not in self.before_model_callback: - self.before_model_callback.append(tracer.llm_metrics_hook) - if tracer.token_metrics_hook not in self.after_model_callback: - self.after_model_callback.append(tracer.token_metrics_hook) - async def _run( self, runner, diff --git a/veadk/cli/services/vefaas/template/README.md b/veadk/cli/services/vefaas/template/README.md index 9ef8d572..f73e2477 100644 --- a/veadk/cli/services/vefaas/template/README.md +++ b/veadk/cli/services/vefaas/template/README.md @@ -6,16 +6,16 @@ We implement an minimal agent to report weather in terms of the given city. ## Structure -| File | Illustration | -| - | - | -| `src/app.py` | The entrypoint of VeFaaS server. | -| `src/run.sh` | The launch script of VeFaaS server. | +| File | Illustration | +|------------------------| - | +| `src/app.py` | The entrypoint of VeFaaS server. | +| `src/run.sh` | The launch script of VeFaaS server. | | `src/requirements.txt` | Dependencies of your project. `VeADK`, `FastAPI`, and `uvicorn` must be included. | -| `src/config.py` | The agent and memory definitions. **You may edit this file.** | -| `config.yaml.example` | Envs for your project (e.g., `api_key`, `token`, ...). **You may edit this file.** | -| `deploy.py` | Local script for deployment. | +| `src/agent.py` | The agent and memory definitions. **You may edit this file.** | +| `config.yaml.example` | Envs for your project (e.g., `api_key`, `token`, ...). **You may edit this file.** | +| `deploy.py` | Local script for deployment. | -You must export your agent and short-term memory in `src/config.py`. +You must export your agent and short-term memory in `src/agent.py`. ## Deploy diff --git a/veadk/cli/services/vefaas/template/config.yaml.example b/veadk/cli/services/vefaas/template/config.yaml.example index 95dad4d8..e9a7ab93 100644 --- a/veadk/cli/services/vefaas/template/config.yaml.example +++ b/veadk/cli/services/vefaas/template/config.yaml.example @@ -4,6 +4,15 @@ model: name: doubao-1-5-pro-256k-250115 api_base: https://ark.cn-beijing.volces.com/api/v3/ api_key: + judge: + name: doubao-1-5-pro-256k-250115 + api_base: https://ark.cn-beijing.volces.com/api/v3/ + api_key: + + +agent_pilot: + api_key: + volcengine: access_key: diff --git a/veadk/cli/services/vefaas/template/deploy.py b/veadk/cli/services/vefaas/template/deploy.py index ca05676a..3fa5db44 100644 --- a/veadk/cli/services/vefaas/template/deploy.py +++ b/veadk/cli/services/vefaas/template/deploy.py @@ -20,24 +20,32 @@ SESSION_ID = "cloud_app_test_session" USER_ID = "cloud_app_test_user" +USE_STUDIO = False + async def main(): engine = CloudAgentEngine() cloud_app = engine.deploy( path=str(Path(__file__).parent / "src"), - name="weather-reporter", - # gateway_name="", # <--- your gateway instance name if you have + name="weather-reporter", # <--- set your application name + use_studio=USE_STUDIO, + # gateway_name="", # <--- set your gateway instance name if you have one ) - response_message = await cloud_app.message_send( - "How is the weather like in Beijing?", SESSION_ID, USER_ID - ) + if not USE_STUDIO: + response_message = await cloud_app.message_send( + "How is the weather like in Beijing?", SESSION_ID, USER_ID + ) - print(f"Message ID: {response_message.messageId}") + print(f"Message ID: {response_message.messageId}") - print(f"Response from {cloud_app.endpoint}: {response_message.parts[0].root.text}") + print( + f"Response from {cloud_app.endpoint}: {response_message.parts[0].root.text}" + ) - print(f"App ID: {cloud_app.app_id}") + print(f"App ID: {cloud_app.app_id}") + else: + print(f"VeADK Studio URL: {cloud_app.endpoint}") if __name__ == "__main__": diff --git a/veadk/cli/services/vefaas/template/src/config.py b/veadk/cli/services/vefaas/template/src/agent.py similarity index 50% rename from veadk/cli/services/vefaas/template/src/config.py rename to veadk/cli/services/vefaas/template/src/agent.py index 2218d8ef..56981008 100644 --- a/veadk/cli/services/vefaas/template/src/config.py +++ b/veadk/cli/services/vefaas/template/src/agent.py @@ -12,47 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os - from veadk import Agent from veadk.memory.short_term_memory import ShortTermMemory from veadk.tools.demo_tools import get_city_weather -from veadk.tracing.base_tracer import BaseTracer -from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer - -# ============= -# Generated by VeADK, do not edit!!! -# ============= -TRACERS: list[BaseTracer] = [] - -exporters = [] -if os.getenv("VEADK_TRACER_APMPLUS", "").lower() == "true": - from veadk.tracing.telemetry.exporters.apmplus_exporter import APMPlusExporter - - exporters.append(APMPlusExporter()) - -if os.getenv("VEADK_TRACER_COZELOOP", "").lower() == "true": - from veadk.tracing.telemetry.exporters.cozeloop_exporter import CozeloopExporter - exporters.append(CozeloopExporter()) - -if os.getenv("VEADK_TRACER_TLS", "").lower() == "true": - from veadk.tracing.telemetry.exporters.tls_exporter import TLSExporter - - exporters.append(TLSExporter()) - -TRACERS.append(OpentelemetryTracer(exporters=exporters)) - -# ============= -# Required [you can edit here] -# ============= APP_NAME: str = "weather-reporter" # <--- export your app name AGENT: Agent = Agent(tools=[get_city_weather]) # <--- export your agent SHORT_TERM_MEMORY: ShortTermMemory = ( ShortTermMemory() ) # <--- export your short term memory - -# ============= -# Optional -# ============= -# Other global variables diff --git a/veadk/cli/services/vefaas/template/src/app.py b/veadk/cli/services/vefaas/template/src/app.py index ace348b2..8ddca907 100644 --- a/veadk/cli/services/vefaas/template/src/app.py +++ b/veadk/cli/services/vefaas/template/src/app.py @@ -14,17 +14,52 @@ import os -from config import AGENT, APP_NAME, SHORT_TERM_MEMORY, TRACERS - +from agent import AGENT, APP_NAME, SHORT_TERM_MEMORY from veadk.a2a.ve_a2a_server import init_app +from veadk.tracing.base_tracer import BaseTracer +from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer + + +# ============================================================================== +# Tracer Config ================================================================ + +TRACERS: list[BaseTracer] = [] + +exporters = [] +if os.getenv("VEADK_TRACER_APMPLUS", "").lower() == "true": + from veadk.tracing.telemetry.exporters.apmplus_exporter import APMPlusExporter + + exporters.append(APMPlusExporter()) + +if os.getenv("VEADK_TRACER_COZELOOP", "").lower() == "true": + from veadk.tracing.telemetry.exporters.cozeloop_exporter import CozeloopExporter + + exporters.append(CozeloopExporter()) + +if os.getenv("VEADK_TRACER_TLS", "").lower() == "true": + from veadk.tracing.telemetry.exporters.tls_exporter import TLSExporter + + exporters.append(TLSExporter()) + +TRACERS.append(OpentelemetryTracer(exporters=exporters)) -SERVER_HOST = os.getenv("SERVER_HOST") AGENT.tracers.extend(TRACERS) -AGENT.update_tracers_callback() +if not getattr(AGENT, "before_model_callback", None): + AGENT.before_model_callback = [] +if not getattr(AGENT, "after_model_callback", None): + AGENT.after_model_callback = [] +for tracer in TRACERS: + if tracer.llm_metrics_hook not in AGENT.before_model_callback: + AGENT.before_model_callback.append(tracer.llm_metrics_hook) + if tracer.token_metrics_hook not in AGENT.after_model_callback: + AGENT.after_model_callback.append(tracer.token_metrics_hook) + +# Tracer Config ================================================================ +# ============================================================================== app = init_app( - server_url=SERVER_HOST, + server_url="0.0.0.0", # Automatic identification is not supported yet. app_name=APP_NAME, agent=AGENT, short_term_memory=SHORT_TERM_MEMORY, diff --git a/veadk/cli/services/vefaas/template/src/run.sh b/veadk/cli/services/vefaas/template/src/run.sh index 95b6a57d..1b7e4a54 100755 --- a/veadk/cli/services/vefaas/template/src/run.sh +++ b/veadk/cli/services/vefaas/template/src/run.sh @@ -38,5 +38,22 @@ python3 -m pip install uvicorn[standard] python3 -m pip install fastapi -# running -exec python3 -m uvicorn app:app --host $HOST --port $PORT --timeout-graceful-shutdown $TIMEOUT +USE_STUDIO=${USE_STUDIO:-False} + +if [ "$USE_STUDIO" = "True" ]; then + echo "USE_STUDIO is True, running veadk studio" + # running veadk studio + exec python3 -m uvicorn studio_app:app --host $HOST --port $PORT --timeout-graceful-shutdown $TIMEOUT --loop asyncio +elif [ "$USE_STUDIO" = "False" ]; then + echo "USE_STUDIO is False, running a2a server" + + # running a2a server + exec python3 -m uvicorn app:app --host $HOST --port $PORT --timeout-graceful-shutdown $TIMEOUT --loop asyncio +else + echo "USE_STUDIO is an invalid value: $USE_STUDIO, running a2a server." + + # running a2a server + exec python3 -m uvicorn app:app --host $HOST --port $PORT --timeout-graceful-shutdown $TIMEOUT --loop asyncio +fi + + \ No newline at end of file diff --git a/veadk/cli/services/vefaas/template/src/studio_agent.py b/veadk/cli/services/vefaas/template/src/studio_agent.py new file mode 100644 index 00000000..9e36effe --- /dev/null +++ b/veadk/cli/services/vefaas/template/src/studio_agent.py @@ -0,0 +1,47 @@ +# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from importlib.util import module_from_spec, spec_from_file_location +from pathlib import Path + +from veadk.cli.studio.fast_api import get_fast_api_app + +path = Path(__file__).parent.resolve() + +agent_py_path = os.path.join(path, "agent.py") +if not os.path.exists(agent_py_path): + raise FileNotFoundError(f"agent.py not found in {path}") + +spec = spec_from_file_location("agent", agent_py_path) +if spec is None: + raise ImportError(f"Could not load spec for agent from {agent_py_path}") + +module = module_from_spec(spec) + +try: + spec.loader.exec_module(module) +except Exception as e: + raise ImportError(f"Failed to execute agent.py: {e}") + +agent = None +short_term_memory = None +try: + agent = module.agent + short_term_memory = module.short_term_memory +except AttributeError as e: + missing = str(e).split("'")[1] if "'" in str(e) else "unknown" + raise AttributeError(f"agent.py is missing required variable: {missing}") + +app = get_fast_api_app(agent, short_term_memory) diff --git a/veadk/cloud/cloud_agent_engine.py b/veadk/cloud/cloud_agent_engine.py index ffa49461..4e56af38 100644 --- a/veadk/cloud/cloud_agent_engine.py +++ b/veadk/cloud/cloud_agent_engine.py @@ -52,8 +52,8 @@ def _prepare(self, path: str, name: str): f"Local agent project path `{path}` is not a directory." ) - assert os.path.exists(os.path.join(path, "config.py")), ( - f"Local agent project path `{path}` does not contain `config.py` file. Please prepare it according to veadk-python/cloud/template/config.py.example" + assert os.path.exists(os.path.join(path, "agent.py")), ( + f"Local agent project path `{path}` does not contain `agent.py` file. Please prepare it according to veadk-python/cloud/template/agent.py.example" ) if os.path.exists(os.path.join(path, "app.py")): diff --git a/veadk/cloud/template/agent.py b/veadk/cloud/template/agent.py new file mode 100644 index 00000000..e7f40112 --- /dev/null +++ b/veadk/cloud/template/agent.py @@ -0,0 +1,19 @@ +# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from veadk.agent import Agent +from veadk.memory.short_term_memory import ShortTermMemory + +AGENT: Agent = ... +APP_NAME: str = ... +SHORT_TERM_MEMORY: ShortTermMemory = ... diff --git a/veadk/cloud/template/app.py b/veadk/cloud/template/app.py index c805b21e..8ddca907 100644 --- a/veadk/cloud/template/app.py +++ b/veadk/cloud/template/app.py @@ -14,16 +14,52 @@ import os -from config import AGENT, APP_NAME, SHORT_TERM_MEMORY, TRACERS - +from agent import AGENT, APP_NAME, SHORT_TERM_MEMORY from veadk.a2a.ve_a2a_server import init_app +from veadk.tracing.base_tracer import BaseTracer +from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer + + +# ============================================================================== +# Tracer Config ================================================================ + +TRACERS: list[BaseTracer] = [] + +exporters = [] +if os.getenv("VEADK_TRACER_APMPLUS", "").lower() == "true": + from veadk.tracing.telemetry.exporters.apmplus_exporter import APMPlusExporter + + exporters.append(APMPlusExporter()) + +if os.getenv("VEADK_TRACER_COZELOOP", "").lower() == "true": + from veadk.tracing.telemetry.exporters.cozeloop_exporter import CozeloopExporter + + exporters.append(CozeloopExporter()) + +if os.getenv("VEADK_TRACER_TLS", "").lower() == "true": + from veadk.tracing.telemetry.exporters.tls_exporter import TLSExporter + + exporters.append(TLSExporter()) + +TRACERS.append(OpentelemetryTracer(exporters=exporters)) + -SERVER_HOST = os.getenv("SERVER_HOST") +AGENT.tracers.extend(TRACERS) +if not getattr(AGENT, "before_model_callback", None): + AGENT.before_model_callback = [] +if not getattr(AGENT, "after_model_callback", None): + AGENT.after_model_callback = [] +for tracer in TRACERS: + if tracer.llm_metrics_hook not in AGENT.before_model_callback: + AGENT.before_model_callback.append(tracer.llm_metrics_hook) + if tracer.token_metrics_hook not in AGENT.after_model_callback: + AGENT.after_model_callback.append(tracer.token_metrics_hook) -AGENT.tracers = TRACERS +# Tracer Config ================================================================ +# ============================================================================== app = init_app( - server_url=SERVER_HOST, + server_url="0.0.0.0", # Automatic identification is not supported yet. app_name=APP_NAME, agent=AGENT, short_term_memory=SHORT_TERM_MEMORY, diff --git a/veadk/cloud/template/config.py b/veadk/cloud/template/config.py deleted file mode 100644 index 53b3ce4a..00000000 --- a/veadk/cloud/template/config.py +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os - -from veadk import Agent -from veadk.memory.short_term_memory import ShortTermMemory -from veadk.tracing.base_tracer import BaseTracer -from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer - -# ============= -# Generated by VeADK, do not edit!!! -# ============= -TRACERS: list[BaseTracer] = [] - -exporters = [] -if os.getenv("VEADK_TRACER_APMPLUS") == "true": - from veadk.tracing.telemetry.exporters.apmplus_exporter import APMPlusExporter - - exporters.append(APMPlusExporter()) - -if os.getenv("VEADK_TRACER_COZELOOP") == "true": - from veadk.tracing.telemetry.exporters.cozeloop_exporter import CozeloopExporter - - exporters.append(CozeloopExporter()) - -if os.getenv("VEADK_TRACER_TLS") == "true": - from veadk.tracing.telemetry.exporters.tls_exporter import TLSExporter - - exporters.append(TLSExporter()) - -TRACERS.append(OpentelemetryTracer(exporters=exporters)) - -# ============= -# Required [you can edit here] -# ============= -APP_NAME: str = ... # <--- export your app name -AGENT: Agent = ... # <--- export your agent -SHORT_TERM_MEMORY: ShortTermMemory = ... # <--- export your short term memory - -# ============= -# Optional -# ============= -# Other global variables diff --git a/veadk/cloud/template/run.sh b/veadk/cloud/template/run.sh index 95b6a57d..1b7e4a54 100644 --- a/veadk/cloud/template/run.sh +++ b/veadk/cloud/template/run.sh @@ -38,5 +38,22 @@ python3 -m pip install uvicorn[standard] python3 -m pip install fastapi -# running -exec python3 -m uvicorn app:app --host $HOST --port $PORT --timeout-graceful-shutdown $TIMEOUT +USE_STUDIO=${USE_STUDIO:-False} + +if [ "$USE_STUDIO" = "True" ]; then + echo "USE_STUDIO is True, running veadk studio" + # running veadk studio + exec python3 -m uvicorn studio_app:app --host $HOST --port $PORT --timeout-graceful-shutdown $TIMEOUT --loop asyncio +elif [ "$USE_STUDIO" = "False" ]; then + echo "USE_STUDIO is False, running a2a server" + + # running a2a server + exec python3 -m uvicorn app:app --host $HOST --port $PORT --timeout-graceful-shutdown $TIMEOUT --loop asyncio +else + echo "USE_STUDIO is an invalid value: $USE_STUDIO, running a2a server." + + # running a2a server + exec python3 -m uvicorn app:app --host $HOST --port $PORT --timeout-graceful-shutdown $TIMEOUT --loop asyncio +fi + + \ No newline at end of file diff --git a/veadk/cloud/template/studio_agent.py b/veadk/cloud/template/studio_agent.py new file mode 100644 index 00000000..9e36effe --- /dev/null +++ b/veadk/cloud/template/studio_agent.py @@ -0,0 +1,47 @@ +# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from importlib.util import module_from_spec, spec_from_file_location +from pathlib import Path + +from veadk.cli.studio.fast_api import get_fast_api_app + +path = Path(__file__).parent.resolve() + +agent_py_path = os.path.join(path, "agent.py") +if not os.path.exists(agent_py_path): + raise FileNotFoundError(f"agent.py not found in {path}") + +spec = spec_from_file_location("agent", agent_py_path) +if spec is None: + raise ImportError(f"Could not load spec for agent from {agent_py_path}") + +module = module_from_spec(spec) + +try: + spec.loader.exec_module(module) +except Exception as e: + raise ImportError(f"Failed to execute agent.py: {e}") + +agent = None +short_term_memory = None +try: + agent = module.agent + short_term_memory = module.short_term_memory +except AttributeError as e: + missing = str(e).split("'")[1] if "'" in str(e) else "unknown" + raise AttributeError(f"agent.py is missing required variable: {missing}") + +app = get_fast_api_app(agent, short_term_memory) From 1c23deb3a67d47e5e95e61123ea88fd384e601c2 Mon Sep 17 00:00:00 2001 From: "hanzhi.421" Date: Wed, 6 Aug 2025 15:05:13 +0800 Subject: [PATCH 2/2] fix(vefaas): lowercase variables --- .../cli/services/vefaas/template/src/agent.py | 6 ++--- veadk/cli/services/vefaas/template/src/app.py | 26 +++++++++---------- veadk/cloud/template/agent.py | 6 ++--- veadk/cloud/template/app.py | 26 +++++++++---------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/veadk/cli/services/vefaas/template/src/agent.py b/veadk/cli/services/vefaas/template/src/agent.py index 56981008..79155143 100644 --- a/veadk/cli/services/vefaas/template/src/agent.py +++ b/veadk/cli/services/vefaas/template/src/agent.py @@ -16,8 +16,8 @@ from veadk.memory.short_term_memory import ShortTermMemory from veadk.tools.demo_tools import get_city_weather -APP_NAME: str = "weather-reporter" # <--- export your app name -AGENT: Agent = Agent(tools=[get_city_weather]) # <--- export your agent -SHORT_TERM_MEMORY: ShortTermMemory = ( +app_name: str = "weather-reporter" # <--- export your app name +agent: Agent = Agent(tools=[get_city_weather]) # <--- export your agent +short_term_memory: ShortTermMemory = ( ShortTermMemory() ) # <--- export your short term memory diff --git a/veadk/cli/services/vefaas/template/src/app.py b/veadk/cli/services/vefaas/template/src/app.py index 8ddca907..0a2d0c09 100644 --- a/veadk/cli/services/vefaas/template/src/app.py +++ b/veadk/cli/services/vefaas/template/src/app.py @@ -14,7 +14,7 @@ import os -from agent import AGENT, APP_NAME, SHORT_TERM_MEMORY +from agent import agent, app_name, short_term_memory from veadk.a2a.ve_a2a_server import init_app from veadk.tracing.base_tracer import BaseTracer from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer @@ -44,23 +44,23 @@ TRACERS.append(OpentelemetryTracer(exporters=exporters)) -AGENT.tracers.extend(TRACERS) -if not getattr(AGENT, "before_model_callback", None): - AGENT.before_model_callback = [] -if not getattr(AGENT, "after_model_callback", None): - AGENT.after_model_callback = [] +agent.tracers.extend(TRACERS) +if not getattr(agent, "before_model_callback", None): + agent.before_model_callback = [] +if not getattr(agent, "after_model_callback", None): + agent.after_model_callback = [] for tracer in TRACERS: - if tracer.llm_metrics_hook not in AGENT.before_model_callback: - AGENT.before_model_callback.append(tracer.llm_metrics_hook) - if tracer.token_metrics_hook not in AGENT.after_model_callback: - AGENT.after_model_callback.append(tracer.token_metrics_hook) + if tracer.llm_metrics_hook not in agent.before_model_callback: + agent.before_model_callback.append(tracer.llm_metrics_hook) + if tracer.token_metrics_hook not in agent.after_model_callback: + agent.after_model_callback.append(tracer.token_metrics_hook) # Tracer Config ================================================================ # ============================================================================== app = init_app( server_url="0.0.0.0", # Automatic identification is not supported yet. - app_name=APP_NAME, - agent=AGENT, - short_term_memory=SHORT_TERM_MEMORY, + app_name=app_name, + agent=agent, + short_term_memory=short_term_memory, ) diff --git a/veadk/cloud/template/agent.py b/veadk/cloud/template/agent.py index e7f40112..b9e51893 100644 --- a/veadk/cloud/template/agent.py +++ b/veadk/cloud/template/agent.py @@ -14,6 +14,6 @@ from veadk.agent import Agent from veadk.memory.short_term_memory import ShortTermMemory -AGENT: Agent = ... -APP_NAME: str = ... -SHORT_TERM_MEMORY: ShortTermMemory = ... +agent: Agent = ... +app_name: str = ... +short_term_memory: ShortTermMemory = ... diff --git a/veadk/cloud/template/app.py b/veadk/cloud/template/app.py index 8ddca907..0a2d0c09 100644 --- a/veadk/cloud/template/app.py +++ b/veadk/cloud/template/app.py @@ -14,7 +14,7 @@ import os -from agent import AGENT, APP_NAME, SHORT_TERM_MEMORY +from agent import agent, app_name, short_term_memory from veadk.a2a.ve_a2a_server import init_app from veadk.tracing.base_tracer import BaseTracer from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer @@ -44,23 +44,23 @@ TRACERS.append(OpentelemetryTracer(exporters=exporters)) -AGENT.tracers.extend(TRACERS) -if not getattr(AGENT, "before_model_callback", None): - AGENT.before_model_callback = [] -if not getattr(AGENT, "after_model_callback", None): - AGENT.after_model_callback = [] +agent.tracers.extend(TRACERS) +if not getattr(agent, "before_model_callback", None): + agent.before_model_callback = [] +if not getattr(agent, "after_model_callback", None): + agent.after_model_callback = [] for tracer in TRACERS: - if tracer.llm_metrics_hook not in AGENT.before_model_callback: - AGENT.before_model_callback.append(tracer.llm_metrics_hook) - if tracer.token_metrics_hook not in AGENT.after_model_callback: - AGENT.after_model_callback.append(tracer.token_metrics_hook) + if tracer.llm_metrics_hook not in agent.before_model_callback: + agent.before_model_callback.append(tracer.llm_metrics_hook) + if tracer.token_metrics_hook not in agent.after_model_callback: + agent.after_model_callback.append(tracer.token_metrics_hook) # Tracer Config ================================================================ # ============================================================================== app = init_app( server_url="0.0.0.0", # Automatic identification is not supported yet. - app_name=APP_NAME, - agent=AGENT, - short_term_memory=SHORT_TERM_MEMORY, + app_name=app_name, + agent=agent, + short_term_memory=short_term_memory, )