config.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """LLM 配置:OpenRouter(OpenAI 兼容)。"""
  2. from __future__ import annotations
  3. import os
  4. from hello_agents import HelloAgentsLLM
  5. def create_llm(
  6. *,
  7. temperature: float = 0.4,
  8. max_tokens: int | None = 4096,
  9. api_key: str | None = None,
  10. base_url: str | None = None,
  11. model: str | None = None,
  12. timeout: int | None = None,
  13. ) -> HelloAgentsLLM:
  14. """
  15. OpenRouter:
  16. OPENROUTER_API_KEY / OPENROUTER_BASE_URL / OPENROUTER_MODEL
  17. 或通用 LLM_* 变量。
  18. 传入的 api_key / base_url / model / timeout 优先于环境变量(供 Web 等场景覆盖)。
  19. """
  20. resolved_key = (
  21. (api_key.strip() if api_key else None)
  22. or os.getenv("OPENROUTER_API_KEY")
  23. or os.getenv("LLM_API_KEY")
  24. )
  25. resolved_base = (
  26. (base_url.strip() if base_url else None)
  27. or os.getenv("OPENROUTER_BASE_URL")
  28. or os.getenv("LLM_BASE_URL")
  29. or "https://openrouter.ai/api/v1"
  30. )
  31. resolved_model = (
  32. (model.strip() if model else None)
  33. or os.getenv("OPENROUTER_MODEL")
  34. or os.getenv("LLM_MODEL_ID")
  35. or "openai/gpt-4o-mini"
  36. )
  37. kwargs: dict = {
  38. "provider": "custom",
  39. "api_key": resolved_key,
  40. "base_url": resolved_base,
  41. "model": resolved_model,
  42. "temperature": temperature,
  43. "max_tokens": max_tokens,
  44. }
  45. if timeout is not None:
  46. kwargs["timeout"] = int(timeout)
  47. return HelloAgentsLLM(**kwargs)