forked from zhanggangyong/agent_management
122 lines
3.8 KiB
Python
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())
|
|
|