openrouter.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import json
  5. from typing import Any, Dict, Optional
  6. from enum import Enum
  7. from dotenv import load_dotenv
  8. from openai import OpenAI
  9. class OpenRouterModel(Enum):
  10. """OpenRouter支持的模型枚举"""
  11. # Google模型
  12. GEMINI_25_FLASH = "google/gemini-2.5-flash"
  13. class OpenRouterProcessor:
  14. def __init__(self, openRouterModel = OpenRouterModel.GEMINI_25_FLASH.value):
  15. # 加载环境变量
  16. load_dotenv()
  17. # 获取API密钥
  18. api_key = os.getenv('OPENROUTER_API_TOKEN')
  19. base_url = os.getenv('OPENROUTER_BASE_URL')
  20. self.client = OpenAI(api_key=api_key, base_url=base_url)
  21. self.model = openRouterModel.value
  22. def process(self, content: Any, system_prompt: str) -> Dict[str, Any]:
  23. try:
  24. # 处理输入内容格式
  25. if isinstance(content, dict):
  26. # 将字典转换为JSON字符串
  27. formatted_content = json.dumps(content, ensure_ascii=False)
  28. else:
  29. formatted_content = content
  30. # 使用OpenRouter API调用模型
  31. response = self.client.chat.completions.create(
  32. model=self.model, # 使用枚举值
  33. messages=[
  34. {"role": "system", "content": system_prompt},
  35. {"role": "user", "content": formatted_content},
  36. ],
  37. stream=False
  38. )
  39. return response.choices[0].message.content
  40. except Exception as e:
  41. print(f"DeepSeek API 调用失败: {e}")
  42. return {"error": str(e), "content": content}
  43. def batch_process(self, contents: list, system_prompt: str) -> list:
  44. results = []
  45. for content in contents:
  46. result = self.process(content, system_prompt)
  47. results.append(result)
  48. return results
  49. def main():
  50. # 创建OpenRouterProcessor实例
  51. processor = OpenRouterProcessor(OpenRouterModel.GEMINI_25_FLASH)
  52. # 示例系统提示
  53. system_prompt = "你是一个有用的AI助手,请简洁地回答问题。"
  54. # 示例用户输入
  55. user_input = "什么是人工智能?"
  56. # 处理单个请求
  57. print("\n处理单个请求:")
  58. result = processor.process(user_input, system_prompt)
  59. print(f"输入: {user_input}")
  60. print(f"输出: {result}")
  61. # 处理批量请求
  62. print("\n处理批量请求:")
  63. batch_inputs = ["什么是机器学习?", "什么是深度学习?"]
  64. batch_results = processor.batch_process(batch_inputs, system_prompt)
  65. for i, (input_text, result) in enumerate(zip(batch_inputs, batch_results)):
  66. print(f"\n请求 {i+1}:")
  67. print(f"输入: {input_text}")
  68. print(f"输出: {result}")
  69. if __name__ == "__main__":
  70. main()