54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
"""
|
||
Dev Agent A2A Server
|
||
使用 ADK 官方 A2A 协议暴露 Dev Agent,支持 HTTP 调用,可直接上云部署。
|
||
|
||
启动方式:
|
||
python a2a_server.py
|
||
|
||
端点:
|
||
A2A 接口: http://127.0.0.1:8001/a2a/dev_agent
|
||
Agent卡片: http://127.0.0.1:8001/.well-known/agent-card.json
|
||
健康检查: http://127.0.0.1:8001/health
|
||
"""
|
||
import os
|
||
import sys
|
||
|
||
# 确保项目根目录在 path 里
|
||
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
|
||
if PROJECT_ROOT not in sys.path:
|
||
sys.path.insert(0, PROJECT_ROOT)
|
||
|
||
from dotenv import load_dotenv
|
||
load_dotenv(os.path.join(PROJECT_ROOT, "my_agent", ".env"))
|
||
|
||
# 强制 UTF-8
|
||
os.environ["PYTHONUTF8"] = "1"
|
||
|
||
import uvicorn
|
||
from google.adk.a2a.utils.agent_to_a2a import to_a2a
|
||
from my_agent.agent import root_agent
|
||
|
||
|
||
# 配置
|
||
HOST = os.getenv("A2A_SERVER_HOST", "0.0.0.0")
|
||
PORT = int(os.getenv("A2A_SERVER_PORT", "8001"))
|
||
|
||
# 用 ADK 官方工具把 agent 转成 A2A 服务
|
||
# 会自动生成 agent card,暴露 /a2a/{agent_name} 端点
|
||
a2a_app = to_a2a(root_agent, port=PORT)
|
||
|
||
|
||
def main():
|
||
print("=" * 60)
|
||
print("Dev Agent A2A Server 启动中...")
|
||
print(f" 监听地址: http://{HOST}:{PORT}")
|
||
print(f" A2A 端点: http://{HOST}:{PORT}/a2a/{root_agent.name}")
|
||
print(f" Agent 卡片: http://{HOST}:{PORT}/.well-known/agent-card.json")
|
||
print("=" * 60)
|
||
|
||
uvicorn.run(a2a_app, host=HOST, port=PORT, log_level="info")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|