Files
agent_management/agent_templates/agents/facebook_agent/main.py
T

122 lines
3.8 KiB
Python

"""
主程序入口
支持命令行和API服务两种模式
"""
import asyncio
import sys
from loguru import logger
from .config import Config
from .agent import FacebookAgent
from .models.schemas import SearchRequest
async def main():
"""主函数"""
# 加载配置
try:
config = Config.from_env()
config.validate()
except Exception as e:
logger.error(f"配置加载失败: {e}")
sys.exit(1)
# 创建Agent
agent = FacebookAgent(config)
# 检查命令行参数
if len(sys.argv) > 1:
# 命令行模式
query = sys.argv[1]
limit = int(sys.argv[2]) if len(sys.argv) > 2 else 5
logger.info(f"搜索关键词: {query}")
request = SearchRequest(query=query, limit=limit)
response = await agent.search(request)
if response.success:
print("\n" + "=" * 60)
print("搜索结果")
print("=" * 60)
print(f"关键词: {response.query}")
print(f"找到 {len(response.results)} 条结果\n")
for i, result in enumerate(response.results, 1):
print(f"[{i}] {result.title}")
if result.snippet:
print(f" {result.snippet[:100]}...")
if result.author:
print(f" 作者: {result.author}")
if result.likes:
print(f" 点赞: {result.likes}")
if result.url:
print(f" 链接: {result.url}")
print()
if response.summary:
print("=" * 60)
print("AI总结")
print("=" * 60)
print(response.summary)
print()
else:
print(f"搜索失败: {response.message}")
sys.exit(1)
else:
# 交互模式
print("=" * 60)
print("Facebook搜索智能Agent")
print("=" * 60)
print("输入搜索关键词,输入 'quit' 或 'exit' 退出")
print("=" * 60)
while True:
try:
query = input("\n🔎 请输入关键词: ").strip()
if query.lower() in ['quit', 'exit', '退出']:
print("再见!")
break
if not query:
continue
request = SearchRequest(query=query, limit=5)
response = await agent.search(request)
if response.success:
print("\n" + "=" * 60)
print(f"找到 {len(response.results)} 条结果")
print("=" * 60)
for i, result in enumerate(response.results, 1):
print(f"\n[{i}] {result.title}")
if result.snippet:
print(f" {result.snippet[:150]}...")
if result.author:
print(f" 👤 {result.author}")
if result.likes:
print(f" ❤️ {result.likes}")
if response.summary:
print("\n" + "=" * 60)
print("📝 AI总结")
print("=" * 60)
print(response.summary)
else:
print(f"❌ 搜索失败: {response.message}")
except KeyboardInterrupt:
print("\n\n再见!")
break
except Exception as e:
logger.error(f"处理失败: {e}")
print(f"❌ 发生错误: {e}")
if __name__ == "__main__":
asyncio.run(main())