v2.2.19: Cloud Model Providers Support (OpenRouter, Anthropic, Gemini)
This commit is contained in:
@@ -212,6 +212,78 @@
|
||||
<div id="googleError" class="error" hidden></div>
|
||||
</section>
|
||||
|
||||
<!-- Cloud LLM Providers -->
|
||||
<section class="section" data-section="providers">
|
||||
<h2>Cloud LLM Providers</h2>
|
||||
<p class="hint">Ollama / LM Studio 로컬 외에 cloud API 를 붙여서 모델 선택지를 확장. API key 는 모두 Secret Storage 에 저장 (settings.json 침범 X). 사이드바 모델 dropdown 에서 활성 provider 의 모델이 함께 표시됩니다.</p>
|
||||
|
||||
<!-- OpenRouter -->
|
||||
<h3 style="margin-top:6px;font-size:13px;color:var(--text)">OpenRouter</h3>
|
||||
<p class="hint">100+ 모델 (Claude / Gemini / GPT / Llama 전부) 을 단일 API 로. <a href="https://openrouter.ai/keys" target="_blank">openrouter.ai/keys</a> 에서 API key 발급.</p>
|
||||
<div class="row toggle">
|
||||
<label><input id="prOpenrouterEnabled" type="checkbox"> OpenRouter 활성화</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="prOpenrouterKey">API Key</label>
|
||||
<div class="input-group">
|
||||
<input id="prOpenrouterKey" type="password" placeholder="sk-or-..." autocomplete="off" spellcheck="false" />
|
||||
<button data-save="providers.openrouter.apiKey">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="prOpenrouterDefault">기본 모델 (선택)</label>
|
||||
<div class="input-group">
|
||||
<input id="prOpenrouterDefault" type="text" placeholder="anthropic/claude-3.5-sonnet" autocomplete="off" />
|
||||
<button data-save="providers.openrouter.defaultModel">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Anthropic -->
|
||||
<h3 style="margin-top:18px;font-size:13px;color:var(--text)">Anthropic Claude (직통)</h3>
|
||||
<p class="hint">Anthropic 직접 API — prompt caching 등 native 기능 활용 가능. <a href="https://console.anthropic.com/settings/keys" target="_blank">console.anthropic.com/settings/keys</a> 에서 API key 발급.</p>
|
||||
<div class="row toggle">
|
||||
<label><input id="prAnthropicEnabled" type="checkbox"> Anthropic 활성화</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="prAnthropicKey">API Key</label>
|
||||
<div class="input-group">
|
||||
<input id="prAnthropicKey" type="password" placeholder="sk-ant-..." autocomplete="off" spellcheck="false" />
|
||||
<button data-save="providers.anthropic.apiKey">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="prAnthropicDefault">기본 모델</label>
|
||||
<div class="input-group">
|
||||
<input id="prAnthropicDefault" type="text" placeholder="claude-3-5-sonnet-20241022" autocomplete="off" />
|
||||
<button data-save="providers.anthropic.defaultModel">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gemini -->
|
||||
<h3 style="margin-top:18px;font-size:13px;color:var(--text)">Google Gemini (직통)</h3>
|
||||
<p class="hint">1M context (gemini-1.5-pro), 무료 tier 사용 가능. <a href="https://aistudio.google.com/app/apikey" target="_blank">aistudio.google.com/app/apikey</a> 에서 발급.</p>
|
||||
<div class="row toggle">
|
||||
<label><input id="prGeminiEnabled" type="checkbox"> Gemini 활성화</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="prGeminiKey">API Key</label>
|
||||
<div class="input-group">
|
||||
<input id="prGeminiKey" type="password" placeholder="AIzaSy..." autocomplete="off" spellcheck="false" />
|
||||
<button data-save="providers.gemini.apiKey">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="prGeminiDefault">기본 모델</label>
|
||||
<div class="input-group">
|
||||
<input id="prGeminiDefault" type="text" placeholder="gemini-2.0-flash-exp" autocomplete="off" />
|
||||
<button data-save="providers.gemini.defaultModel">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="providersFeedback" class="feedback" hidden></div>
|
||||
<div id="providersError" class="error" hidden></div>
|
||||
</section>
|
||||
|
||||
<!-- Advanced -->
|
||||
<section class="section" data-section="advanced">
|
||||
<h2>고급</h2>
|
||||
|
||||
Reference in New Issue
Block a user