Python AI代理+MCP
此包实现了与Node.js版本相同的功能 ../nodejs/,用Python构建。它包括一个AI代理工作流程,通过MCP工具查找一个人的LinkedIn个人资料URL,抓取个人资料,并要求LLM生成一个简短的摘要和两个有趣的事实。它还包括示例MCP服务器(stdio上的数学和SSE上的天气)和一个小型MCP客户端演示。
它的作用
- LinkedIn摘要生成器管道:给定一个名称,查找LinkedIn URL→ 通过Scrapin API(或mock)刮取配置文件→ 通过LLM进行总结。
- MCP服务器:用于数学(stdio)和天气(SSE)的示例服务器,以演示工具的使用。
- MCP客户端:连接到服务器并使用工具执行简单的代理。
技术栈
- 运行时/语言:Python 3.10+
- LLM框架:
langchain,langchain-openai,langgraph - 主控程序:
fastmcp用于创作服务器;langchain-mcp-adapters为客户 - 配置:
python-dotenv - 超文本传输协议:
requests - 解析:
pydantic+langchain_core.output_parsers
项目结构(关键文件)
main.py:端到端LinkedIn摘要链。用途agents/linkedin_agent.lookup和third_parties/linkedin.scrape_linkedin_profile.agents/linkedin_agent.py:用途MultiServerMCPClient生成/连接到Profiles MCP服务器,并要求LLM代理返回LinkedIn URL。mcp_server/profiles.py:FastMCP服务器暴露:
- 提示: profile_prompt - 工具: profile_url (使用Tavily搜索) - 资源: profile://users/{name}
_fastmcp/servers/math_server.py:通过stdio的数学MCP服务器。_fastmcp/servers/weather_server.py:SSE上的气象MCP服务器。_fastmcp/langchain_client.py:连接到数学(stdio)和天气(SSE)服务器并运行代理的客户端演示。third_parties/linkedin.py:通过Scrapin API抓取LinkedIn个人资料数据,带有可选的mock。output_parsers.py:Pydantic模型和PydanticOutputParser用于汇总器输出。
需求
创建一个 .env 此文件夹中的文件包含:
OPENAI_API_KEY=sk-...
OPENAI_MODEL_NAME=gpt-4o-mini
TAVILY_API_KEY=...
SCRAPIN_API_KEY=...使用Pipenv安装依赖项(推荐):
pip install pipenv
pipenv install --dev --ignore-pipfile或者直接使用pip:
pip install -r <(pipenv requirements) # if Pipenv is used
# OR create your own requirements.txt with the pinned versions如何跑步
1) 端到端LinkedIn摘要
跑 main.py,其中:通过MCP支持的代理获取LinkedIn URL→ 刮擦轮廓→ 总结。
pipenv run python main.py笔记:
- 默认名称是硬编码的
main.py(asyncio.run(main("Arif Hidayatullah"))).编辑以更改目标人员。 - 需要
OPENAI_*,TAVILY_API_KEY,以及SCRAPIN_API_KEY在.env.
2) 仅运行LinkedIn查找代理
pipenv run python agents/linkedin_agent.py打印代理使用Profiles MCP服务器找到的LinkedIn URL。
3) 手动运行MCP配置文件服务器(可选)
LinkedIn代理可以生成服务器,但您可以直接运行它进行测试:
pipenv run python mcp_server/profiles.py4) MCP演示:数学(stdio)+天气(SSE)
客户在 _fastmcp/langchain_client.py 连接到两个服务器:
- math:作为stdio上的子进程生成
- 天气:SSE
http://localhost:8000/sse
步骤:
- 启动天气SSE服务器:
pipenv run python _fastmcp/servers/weather_server.py- 在另一个终端中,运行客户端:
pipenv run python _fastmcp/langchain_client.py可选:独立运行数学服务器:
pipenv run python _fastmcp/servers/math_server.py故障排除
- 401/权限错误:检查
OPENAI_API_KEY,TAVILY_API_KEY,以及SCRAPIN_API_KEY. - 未找到模型:确保
OPENAI_MODEL_NAME是您的密钥可以访问的模型。 - 天气客户端无法连接:确认天气服务器正在运行并与SSE URL匹配(
http://localhost:8000/sse). - Windows绝对路径:为了方便起见,演示使用绝对Windows路径。更新路径
agents/linkedin_agent.py和_fastmcp/langchain_client.py如果您的克隆路径不同,请重构为相对路径。
