Files
code-review/app/config.py
T
jiantw83 1324f1575d feat: 階段一 - 基本流程串接骨架
- 重寫 action.yaml:支援所有 LLM providers 的 inputs
- 重寫 Dockerfile:python:3.11-slim + git
- 重寫 entrypoint.sh:啟動 app/main.py
- app/config.py:環境變數與 LLM 自動偵測
- app/llm.py:OpenAI-compatible 統一介面
- app/gitea.py:PR diff 取得與 comment 發布
- app/roles.py:從 prompts/roles/*.yaml 載入角色
- app/main.py:pipeline 骨架,log 每個主要階段
- app/prompts/roles/:五個角色定義(Aria/Rex/Zara/Leo/Maya)
2026-05-11 07:23:06 +00:00

32 lines
2.3 KiB
Python

import os
# Gitea
GITEA_TOKEN = os.environ.get("GITEA_TOKEN", "")
GITEA_SERVER_URL = os.environ.get("GITEA_SERVER_URL", "https://gitea.com")
GITEA_REPOSITORY = os.environ.get("GITEA_REPOSITORY", "")
PR_NUMBER = os.environ.get("PR_NUMBER", "")
PR_HEAD_BRANCH = os.environ.get("PR_HEAD_BRANCH", "")
PR_BASE_BRANCH = os.environ.get("PR_BASE_BRANCH", "")
FINDINGS_PATH = ".gitea/ai-review/findings.json"
def get_llm_config():
"""依優先順序偵測可用的 LLM,回傳 (provider, api_key, base_url, model)"""
checks = [
("openai", os.environ.get("OPENAI_API_KEY"), os.environ.get("OPENAI_BASE_URL", "https://api.openai.com/v1"), os.environ.get("OPENAI_MODEL", "gpt-4o-mini")),
("claude", os.environ.get("CLAUDE_API_KEY"), os.environ.get("CLAUDE_BASE_URL", "https://api.anthropic.com/v1"), os.environ.get("CLAUDE_MODEL", "claude-3-haiku-20240307")),
("gemini", os.environ.get("GEMINI_API_KEY"), os.environ.get("GEMINI_BASE_URL", "https://generativelanguage.googleapis.com/v1beta"), os.environ.get("GEMINI_MODEL", "gemini-1.5-flash")),
("ollama", "ollama", os.environ.get("OLLAMA_BASE_URL", ""), os.environ.get("OLLAMA_MODEL", "")),
("amazonq", os.environ.get("AMAZONQ_API_KEY"), os.environ.get("AMAZONQ_BASE_URL", "https://q.api.aws"), os.environ.get("OPENAI_MODEL", "amazon-q")),
("kilo", os.environ.get("KILO_API_KEY"), os.environ.get("KILO_BASE_URL", "https://api.kilocode.com/v1"), os.environ.get("OPENAI_MODEL", "kilo-default")),
("roo", os.environ.get("ROO_API_KEY"), os.environ.get("ROO_BASE_URL", "https://api.roocode.com/v1"), os.environ.get("OPENAI_MODEL", "roo-default")),
("cline", os.environ.get("CLINE_API_KEY"), os.environ.get("CLINE_BASE_URL", "https://api.cline.dev/v1"), os.environ.get("OPENAI_MODEL", "cline-default")),
("continue", os.environ.get("CONTINUE_API_KEY"), os.environ.get("CONTINUE_BASE_URL", "https://api.continue.dev/v1"), os.environ.get("OPENAI_MODEL", "continue-default")),
("kade", os.environ.get("KADE_API_KEY"), os.environ.get("KADE_BASE_URL", "https://api.kade.dev/v1"), os.environ.get("OPENAI_MODEL", "kade-default")),
]
for provider, key, base_url, model in checks:
if key and base_url:
return provider, key, base_url, model
return None, None, None, None