openrouter.py 2.9 KB

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