basic_agent.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #!/usr/bin/env python3
  2. """
  3. 基础Agent示例 - LangChain学习起点
  4. =================================
  5. 这个文件展示了如何创建一个简单的Agent,包含:
  6. 1. 基础的LLM调用
  7. 2. 简单的提示词设计
  8. 3. 基本的结果处理
  9. 运行方法:
  10. python examples/basic_agent.py
  11. """
  12. import os
  13. import sys
  14. from typing import Dict, Any
  15. from dotenv import load_dotenv
  16. # 加载环境变量
  17. load_dotenv()
  18. try:
  19. from langchain_openai import ChatOpenAI
  20. from langchain_core.prompts import ChatPromptTemplate
  21. except ImportError as e:
  22. print(f"❌ 缺少依赖包: {e}")
  23. print("请运行: pip install langchain langchain-openai python-dotenv")
  24. sys.exit(1)
  25. class BasicAgent:
  26. """基础Agent示例"""
  27. def __init__(self):
  28. """初始化Agent"""
  29. api_key = os.getenv('DEEPSEEK_API_KEY')
  30. if not api_key:
  31. raise ValueError("请在.env文件中设置DEEPSEEK_API_KEY")
  32. # 初始化LLM
  33. self.llm = ChatOpenAI(
  34. model="deepseek-chat",
  35. api_key=api_key,
  36. base_url="https://api.deepseek.com",
  37. temperature=0.1
  38. )
  39. # 创建提示词模板
  40. self.prompt_template = ChatPromptTemplate.from_messages([
  41. ("system", "你是一个专业的数据分析师,请简洁地回答用户的问题。"),
  42. ("user", "{question}")
  43. ])
  44. print("✅ BasicAgent初始化完成")
  45. def analyze_data(self, question: str, data_sample: str = None) -> Dict[str, Any]:
  46. """
  47. 分析数据并返回结果
  48. Args:
  49. question: 用户问题
  50. data_sample: 数据样本(可选)
  51. Returns:
  52. 分析结果字典
  53. """
  54. try:
  55. # 构建完整的查询
  56. full_question = question
  57. if data_sample:
  58. full_question += f"\n\n数据样本: {data_sample}"
  59. # 创建链并调用
  60. chain = self.prompt_template | self.llm
  61. response = chain.invoke({"question": full_question})
  62. return {
  63. "success": True,
  64. "question": question,
  65. "data_sample": data_sample,
  66. "answer": response.content,
  67. "model": "deepseek-chat"
  68. }
  69. except Exception as e:
  70. return {
  71. "success": False,
  72. "question": question,
  73. "error": str(e)
  74. }
  75. def main():
  76. """主函数 - 演示基本Agent功能"""
  77. print("🚀 基础Agent示例")
  78. print("=" * 50)
  79. try:
  80. # 创建Agent实例
  81. agent = BasicAgent()
  82. # 示例问题
  83. questions = [
  84. "请解释什么是数据分析",
  85. "如何提高数据分析的准确性?",
  86. "数据可视化的重要性是什么?"
  87. ]
  88. print("\n🧪 测试Agent功能:")
  89. print("-" * 30)
  90. # 逐个测试问题
  91. for i, question in enumerate(questions, 1):
  92. print(f"\n📋 问题 {i}: {question}")
  93. result = agent.analyze_data(question)
  94. if result["success"]:
  95. print(f"✅ 回答: {result['answer'][:100]}...")
  96. else:
  97. print(f"❌ 错误: {result['error']}")
  98. print("\n🎉 基础Agent示例完成!")
  99. print("\n💡 下一步学习建议:")
  100. print("1. 查看 examples/state_machine.py - 学习LangGraph状态机")
  101. print("2. 查看 examples/advanced_agent.py - 学习高级Agent功能")
  102. print("3. 阅读 PRACTICE_GUIDE.md - 获取完整学习路径")
  103. except Exception as e:
  104. print(f"❌ 运行出错: {e}")
  105. print("\n🔧 故障排除:")
  106. print("1. 检查 .env 文件是否存在")
  107. print("2. 确认 DEEPSEEK_API_KEY 已正确设置")
  108. print("3. 确认网络连接正常")
  109. print("4. 运行: pip install -r requirements.txt")
  110. if __name__ == "__main__":
  111. main()