from google.adk.agents import RunConfig
from google.adk.agents.run_config import StreamingMode
from google.genai.types import Content, Part
from veadk import Agent, Runner
from agentkit.apps import AgentkitSimpleApp
from veadk.prompts.agent_default_prompt import DEFAULT_DESCRIPTION, DEFAULT_INSTRUCTION
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
app = AgentkitSimpleApp()
app_name = "simple_streamable_app"
description = DEFAULT_DESCRIPTION
system_prompt = DEFAULT_INSTRUCTION
description=description,
instruction=system_prompt,
agent.model._additional_args["stream_options"] = {"include_usage": True}
runner = Runner(agent=agent, app_name=app_name)
async def run(payload: dict, headers: dict):
prompt = payload["prompt"]
user_id = headers["user_id"]
session_id = headers["session_id"]
f"Running agent with prompt: {prompt}, user_id: {user_id}, session_id: {session_id}"
session_service = runner.short_term_memory.session_service
session = await session_service.get_session(
app_name=app_name, user_id=user_id, session_id=session_id
await session_service.create_session(
app_name=app_name, user_id=user_id, session_id=session_id
new_message = Content(role="user", parts=[Part(text=prompt)])
async for event in runner.run_async(
new_message=new_message,
run_config=RunConfig(streaming_mode=StreamingMode.SSE),
sse_event = event.model_dump_json(exclude_none=True, by_alias=True)
logger.debug("Generated event in agent run streaming: %s", sse_event)
logger.exception("Error in event_generator: %s", e)
error_data = json.dumps({"error": str(e)})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)