Download packages/web/src/content/docs/ko/providers.mdx from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 50.7 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/web/src/content/docs/ko/providers.mdx
- Command line
-
hf download hf://SaylorTwift/opencode/packages/web/src/content/docs/ko/providers.mdx
-
curl -L -o providers.mdx https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/web/src/content/docs/ko/providers.mdx
50.7 kB
| title: 곡κΈμ | |
| description: OpenCodeμμ LLM 곡κΈμλ₯Ό μ¬μ©ν©λλ€. | |
| import config from "../../../../config.mjs" | |
| export const console = config.console | |
| OpenCodeλ [AI SDK](https://ai-sdk.dev/) λ° [Models.dev](https://models.dev)λ₯Ό μ¬μ©νμ¬ **75κ° μ΄μμ LLM 곡κΈμ**λ₯Ό μ§μνλ©° λ‘컬 λͺ¨λΈλ μ€νν μ μμ΅λλ€. | |
| νμν 곡κΈμλ₯Ό μΆκ°νλ €λ©΄: | |
| 1. `/connect` λͺ λ Ήμ μ¬μ©νμ¬ κ³΅κΈμμ API ν€λ₯Ό μΆκ°νμμμ€. | |
| 2. OpenCode ꡬμ±μμ 곡κΈμλ₯Ό ꡬμ±νμμμ€. | |
| ### μ격 μ¦λͺ | |
| `/connect` λͺ λ ΉμΌλ‘ 곡κΈμμ API ν€λ₯Ό μΆκ°νλ©΄ λ€μ μμΉμ μ μ₯λ©λλ€: | |
| `~/.local/share/opencode/auth.json` | |
| ### κ΅¬μ± | |
| OpenCode μ€μ μ `provider` μΉμ μ ν΅ν΄ 곡κΈμλ₯Ό μ¬μ©μ μ μν μ μμ΅λλ€. | |
| #### κΈ°λ³Έ URL | |
| `baseURL` μ΅μ μ μ€μ νμ¬ λͺ¨λ 곡κΈμλ₯Ό μν κΈ°λ³Έ URLμ μ¬μ©μ μ μν μ μμ΅λλ€. νλ‘μ μλΉμ€ λλ μ¬μ©μ μ μ μλν¬μΈνΈλ₯Ό μ¬μ©ν λ μ μ©ν©λλ€. | |
| ```json title="opencode.json" {6} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "anthropic": { | |
| "options": { | |
| "baseURL": "https://api.anthropic.com/v1" | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| ## OpenCode Zen | |
| OpenCode Zenμ OpenCode νμ΄ OpenCodeμ μ μλνλλ‘ ν μ€νΈνκ³ κ²μ¦ν λͺ¨λΈ λͺ©λ‘μ λλ€. [λ μμ보기](/docs/zen). | |
| :::tip | |
| μ²μμ΄λΌλ©΄ OpenCode ZenμΌλ‘ μμνλ κ²μ΄ μ’μ΅λλ€. | |
| ::: | |
| 1. TUIμμ `/connect` λͺ λ Ήμ μ€ννκ³ `OpenCode Zen`μ μ νν λ€, [opencode.ai/auth](https://opencode.ai/zen)λ‘ μ΄λν©λλ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 2. λ‘κ·ΈμΈνκ³ κ²°μ μ 보λ₯Ό μ λ ₯ν ν API ν€λ₯Ό 볡μ¬νμμμ€. | |
| 3. API ν€λ₯Ό λΆμ¬λ£μ΅λλ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. TUIμμ `/models`λ₯Ό μ€ννμ¬ μΆμ² λͺ¨λΈ λͺ©λ‘μ λ³Ό μ μμ΅λλ€. | |
| ```txt | |
| /models | |
| ``` | |
| OpenCodeμ λ€λ₯Έ 곡κΈμμ²λΌ μλνλ©° μ¬μ©μ μμ ν μ ν μ¬νμ λλ€. | |
| ## OpenCode Go | |
| OpenCode Goλ OpenCode νμ΄ ν μ€νΈνκ³ κ²μ¦νμ¬ OpenCodeμ μ μλνλ μΈκΈ° μλ μ€ν μ½λ© λͺ¨λΈμ μμ μ μΌλ‘ μ‘μΈμ€ν μ μλ μ λ ΄ν ꡬλ μκΈμ μ λλ€. | |
| 1. TUIμμ `/connect` λͺ λ Ήμ μ€ννκ³ `OpenCode Go`λ₯Ό μ νν λ€ [opencode.ai/auth](https://opencode.ai/zen)λ‘ μ΄λνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 2. λ‘κ·ΈμΈνκ³ κ²°μ μ 보λ₯Ό μ λ ₯ν ν API ν€λ₯Ό 볡μ¬νμμμ€. | |
| 3. API ν€λ₯Ό λΆμ¬λ£μ΅λλ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. TUIμμ `/models`λ₯Ό μ€ννμ¬ μΆμ² λͺ¨λΈ λͺ©λ‘μ λ³Ό μ μμ΅λλ€. | |
| ```txt | |
| /models | |
| ``` | |
| OpenCodeμ λ€λ₯Έ 곡κΈμμ²λΌ μλνλ©° μ¬μ©μ μμ ν μ ν μ¬νμ λλ€. | |
| ## λλ ν 리 | |
| 곡κΈμ μΈλΆ μ 보λ₯Ό νμΈνμΈμ. λͺ©λ‘μ 곡κΈμλ₯Ό μΆκ°νλ €λ©΄ PRμ μ΄μ΄μ£ΌμΈμ. | |
| :::note | |
| μνλ 곡κΈμκ° μλμ? PRμ μ μΆν΄ μ£ΌμΈμ. | |
| ::: | |
| ### 302.AI | |
| 1. [302.AI μ½μ](https://302.ai/)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **302.AI**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. 302.AI API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. λͺ¨λΈμ μ ννλ €λ©΄ `/models` λͺ λ Ήμ μ€ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Amazon Bedrock | |
| OpenCodeλ‘ Amazon Bedrockμ μ¬μ©νλ €λ©΄: | |
| 1. Amazon Bedrock μ½μμ **Model catalog**λ‘ μ΄λνμ¬ μνλ λͺ¨λΈμ λν μ‘μΈμ€λ₯Ό μμ²ν©λλ€. | |
| :::tip | |
| Amazon Bedrockμμ μνλ λͺ¨λΈμ λν μ‘μΈμ€ κΆνμ΄ μμ΄μΌ ν©λλ€. | |
| ::: | |
| 2. λ€μ λ°©λ² μ€ νλλ₯Ό μ¬μ©νμ¬ **μΈμ¦μ ꡬμ±**ν©λλ€: | |
| *** | |
| #### νκ²½ λ³μ (λΉ λ₯Έ μμ) | |
| OpenCodeλ₯Ό μ€ννλ λμ λ€μ νκ²½ λ³μ μ€ νλλ₯Ό μ€μ ν©λλ€: | |
| ```bash | |
| # Option 1: Using AWS access keys | |
| AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY opencode | |
| # Option 2: Using named AWS profile | |
| AWS_PROFILE=my-profile opencode | |
| # Option 3: Using Bedrock bearer token | |
| AWS_BEARER_TOKEN_BEDROCK=XXX opencode | |
| ``` | |
| λλ bash νλ‘νμ μΆκ°ν©λλ€: | |
| ```bash title="~/.bash_profile" | |
| export AWS_PROFILE=my-dev-profile | |
| export AWS_REGION=us-east-1 | |
| ``` | |
| *** | |
| #### κ΅¬μ± νμΌ (κΆμ₯) | |
| νλ‘μ νΈλ³ λλ μꡬ ꡬμ±μ μν΄ `opencode.json`μ μ¬μ©νμμμ€: | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "amazon-bedrock": { | |
| "options": { | |
| "region": "us-east-1", | |
| "profile": "my-aws-profile" | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| **μ ν¨ν μ΅μ :** | |
| - `region` - AWS 리μ (μ: `us-east-1`, `eu-west-1`) | |
| - `profile` - `~/.aws/credentials`μ AWS νλ‘ν μ΄λ¦ | |
| - `endpoint` - VPC μλν¬μΈνΈ λ±μ μν μ¬μ©μ μ μ μλν¬μΈνΈ URL (μΌλ° `baseURL` μ΅μ μ λ³μΉ) | |
| :::tip | |
| κ΅¬μ± νμΌ μ΅μ μ νκ²½ λ³μλ³΄λ€ μ°μ μμκ° λμ΅λλ€. | |
| ::: | |
| *** | |
| #### κ³ κΈ: VPC μλν¬μΈνΈ | |
| Bedrockμ VPC μλν¬μΈνΈλ₯Ό μ¬μ©νλ κ²½μ°: | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "amazon-bedrock": { | |
| "options": { | |
| "region": "us-east-1", | |
| "profile": "production", | |
| "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com" | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| :::note | |
| `endpoint` μ΅μ μ μΌλ°μ μΈ `baseURL` μ΅μ μ λ³μΉμ λλ€. `endpoint`μ `baseURL` λ λ€ μ§μ λ κ²½μ° `endpoint`κ° μ°μ ν©λλ€. | |
| ::: | |
| *** | |
| #### μΈμ¦ λ°©λ² | |
| - **`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`**: IAM μ¬μ©μ λ° AWS μ½μμμ μ‘μΈμ€ ν€ μμ± | |
| - **`AWS_PROFILE`**: `~/.aws/credentials`μ νλ‘ν μ΄λ¦μ μ¬μ©ν©λλ€. `aws configure --profile my-profile` λλ `aws sso login`μΌλ‘ λ¨Όμ ꡬμ±νμμμ€. | |
| - **`AWS_BEARER_TOKEN_BEDROCK`**: Amazon Bedrock μ½μμμ μμ API ν€ μμ± | |
| - **`AWS_WEB_IDENTITY_TOKEN_FILE` / `AWS_ROLE_ARN`**: EKS IRSA (μλΉμ€ κ³μ μ© IAM μν ) λλ λ€λ₯Έ Kubernetes νκ²½μ OIDC μ°λ. μ΄ νκ²½ λ³μλ μλΉμ€ κ³μ μ μ¬μ©ν λ Kubernetesμ μν΄ μλμΌλ‘ μ£Όμ λ©λλ€. | |
| *** | |
| #### μΈμ¦ μ°μ μμ | |
| Amazon Bedrockμ λ€μκ³Ό κ°μ μΈμ¦ μ°μ μμλ₯Ό μ¬μ©ν©λλ€. | |
| 1. **Bearer Token** - `AWS_BEARER_TOKEN_BEDROCK` νκ²½ λ³μ λλ `/connect` λͺ λ Ήμ ν ν° | |
| 2. **AWS Credential Chain** - νλ‘ν, μ‘μΈμ€ ν€, 곡μ μ격 μ¦λͺ , IAM μν , μΉ ID ν ν° (EKS IRSA), μΈμ€ν΄μ€ λ©νλ°μ΄ν° | |
| :::note | |
| Bearer ν ν°μ μ€μ ν λ (`/connect` λλ `AWS_BEARER_TOKEN_BEDROCK`λ₯Ό ν΅ν΄), ꡬμ±λ νλ‘νμ ν¬ν¨ν λͺ¨λ AWS μ격 μ¦λͺ λ°©λ²λ³΄λ€ μ°μ μμκ° λμ΅λλ€. | |
| ::: | |
| 3. `/models` λͺ λ Ήμ μ€ννμ¬ μνλ λͺ¨λΈμ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| :::note | |
| μ¬μ©μ μ μ μΆλ‘ νλ‘ν(custom inference profiles)μ κ²½μ°, ν€μ λͺ¨λΈκ³Ό 곡κΈμ μ΄λ¦μ μ¬μ©νκ³ `id` μμ±μ ARNμ μ€μ νμμμ€. μ΄λ κ² νλ©΄ μ¬λ°λ₯Έ μΊμ±μ΄ 보μ₯λ©λλ€. | |
| ::: | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "amazon-bedrock": { | |
| // ... | |
| "models": { | |
| "anthropic-claude-sonnet-4.5": { | |
| "id": "arn:aws:bedrock:us-east-1:xxx:application-inference-profile/yyy" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| ### Anthropic | |
| 1. κ°μ ν `/connect` λͺ λ Ήμ μ€ννκ³ **Anthropic**μ μ νν©λλ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 2. **Claude Pro/Max** μ΅μ μ μ ννλ©΄ λΈλΌμ°μ κ° μ΄λ¦¬κ³ μΈμ¦μ μμ²ν©λλ€. | |
| ```txt | |
| β Select auth method | |
| β | |
| β Claude Pro/Max | |
| β Create an API Key | |
| β Manually enter API Key | |
| β | |
| ``` | |
| 3. μ΄μ `/models` λͺ λ Ήμ μ¬μ©ν λ λͺ¨λ Anthropic λͺ¨λΈμ μ¬μ©ν μ μμ΅λλ€. | |
| ```txt | |
| /models | |
| ``` | |
| :::info | |
| OpenCodeμμ Claude Pro/Max ꡬλ μ μ¬μ©νλ κ²μ [Anthropic](https://anthropic.com)μμ 곡μμ μΌλ‘ μ§μνμ§ μμ΅λλ€. | |
| ::: | |
| ##### API ν€ μ¬μ© | |
| Pro/Max ꡬλ μ΄ μλ κ²½μ° **Create an API Key**λ₯Ό μ νν μ μμ΅λλ€. λΈλΌμ°μ κ° μ΄λ¦¬κ³ Anthropicμ λ‘κ·ΈμΈν ν ν°λ―Έλμ λΆμ¬λ£μ μ μλ μ½λλ₯Ό μ 곡ν©λλ€. | |
| λλ μ΄λ―Έ API ν€κ° μλ€λ©΄, **Manually enter API Key**λ₯Ό μ ννκ³ ν°λ―Έλμ λΆμ¬λ£μ μ μμ΅λλ€. | |
| ### Atomic Chat | |
| OpenAI νΈν API μλ² λ€μμ λ‘컬 LLMμ μ€ννλ λ°μ€ν¬ν± μ ν리μΌμ΄μ μΈ [Atomic Chat](https://atomic.chat)μ ν΅ν΄ λ‘컬 λͺ¨λΈμ μ¬μ©νλλ‘ opencodeλ₯Ό ꡬμ±ν μ μμ΅λλ€(κΈ°λ³Έ μλν¬μΈνΈ `http://127.0.0.1:1337/v1`). | |
| ```json title="opencode.json" "atomic-chat" {5, 6, 8, 10-14} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "atomic-chat": { | |
| "npm": "@ai-sdk/openai-compatible", | |
| "name": "Atomic Chat (local)", | |
| "options": { | |
| "baseURL": "http://127.0.0.1:1337/v1" | |
| }, | |
| "models": { | |
| "<your-model-id>": { | |
| "name": "<your-model-name>" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| μ΄ μμμμ: | |
| - `atomic-chat`μ μ¬μ©μ μ§μ 곡κΈμ IDμ λλ€. μνλ μ΄λ€ λ¬Έμμ΄μ΄λ μ¬μ©ν μ μμ΅λλ€. | |
| - `npm`μ μ΄ κ³΅κΈμμ μ¬μ©ν ν¨ν€μ§λ₯Ό μ§μ ν©λλ€. μ¬κΈ°μλ λͺ¨λ OpenAI νΈν APIμ `@ai-sdk/openai-compatible`μ΄ μ¬μ©λ©λλ€. | |
| - `name`μ UIμ νμλλ 곡κΈμμ μ΄λ¦μ λλ€. | |
| - `options.baseURL`μ λ‘컬 μλ²μ μλν¬μΈνΈμ λλ€. Atomic Chat μ€μ μ λ§κ² νΈμ€νΈμ ν¬νΈλ₯Ό λ³κ²½νμΈμ. | |
| - `models`λ λͺ¨λΈ IDμ ν΄λΉ νμ μ΄λ¦μ λ§΅μ λλ€. κ° IDλ `GET /v1/models`κ° λ°ννλ `id`μ μΌμΉν΄μΌ νλ©°, νμ¬ Atomic Chatμ λ‘λλ ID λͺ©λ‘μ νμΈνλ €λ©΄ `curl http://127.0.0.1:1337/v1/models`λ₯Ό μ€ννμΈμ. | |
| :::tip | |
| λꡬ νΈμΆμ΄ μ μλνμ§ μλ κ²½μ°, λꡬ νΈμΆμ μ μ§μνλ λ‘λλ λͺ¨λΈ(μ: Qwen-Coder λλ DeepSeek-Coder λ³ν)μ μ ννμΈμ. | |
| ::: | |
| ### Azure OpenAI | |
| :::note | |
| "I'm sorry, but I cannot assist with that request" μ€λ₯κ° λ°μνλ©΄, Azure 리μμ€μ μ½ν μΈ νν°λ₯Ό **DefaultV2**μμ **Default**λ‘ λ³κ²½ν΄ 보μΈμ. | |
| ::: | |
| 1. [Azure ν¬νΈ](https://portal.azure.com/)λ‘ μ΄λνμ¬ **Azure OpenAI** 리μμ€λ₯Ό λ§λλλ€. λ€μμ΄ νμν©λλ€: | |
| - **리μμ€ μ΄λ¦**: API μλν¬μΈνΈμ μΌλΆκ° λ©λλ€ (`https://RESOURCE_NAME.openai.azure.com/`) | |
| - **API ν€**: 리μμ€μ `KEY 1` λλ `KEY 2` | |
| 2. [Azure AI Foundry](https://ai.azure.com/)λ‘ μ΄λνμ¬ λͺ¨λΈμ λ°°ν¬ν©λλ€. | |
| :::note | |
| λ°°ν¬ μ΄λ¦μ μ λλ‘ μλνλ €λ©΄ OpenCodeμ λͺ¨λΈ μ΄λ¦κ³Ό μΌμΉν΄μΌ ν©λλ€. | |
| ::: | |
| 3. `/connect` λͺ λ Ήμ μ€ννκ³ **Azure**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 4. API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 5. 리μμ€ μ΄λ¦μ νκ²½ λ³μλ‘ μ€μ : | |
| ```bash | |
| AZURE_RESOURCE_NAME=XXX opencode | |
| ``` | |
| λλ bash νλ‘νμ μΆκ°: | |
| ```bash title="~/.bash_profile" | |
| export AZURE_RESOURCE_NAME=XXX | |
| ``` | |
| 6. `/models` λͺ λ Ήμ μ€ννμ¬ λ°°ν¬λ λͺ¨λΈμ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Azure Cognitive Services | |
| 1. [Azure ν¬νΈ](https://portal.azure.com/)λ‘ μ΄λνμ¬ **Azure OpenAI** 리μμ€λ₯Ό λ§λλλ€. λ€μμ΄ νμν©λλ€: | |
| - **리μμ€ μ΄λ¦**: API μλν¬μΈνΈμ μΌλΆκ° λ©λλ€ (`https://AZURE_COGNITIVE_SERVICES_RESOURCE_NAME.cognitiveservices.azure.com/`) | |
| - **API ν€**: 리μμ€μ `KEY 1` λλ `KEY 2` | |
| 2. [Azure AI Foundry](https://ai.azure.com/)λ‘ μ΄λνμ¬ λͺ¨λΈμ λ°°ν¬ν©λλ€. | |
| :::note | |
| λ°°ν¬ μ΄λ¦μ μ λλ‘ μλνλ €λ©΄ OpenCodeμ λͺ¨λΈ μ΄λ¦κ³Ό μΌμΉν΄μΌ ν©λλ€. | |
| ::: | |
| 3. `/connect` λͺ λ Ήμ μ€ννκ³ **Azure Cognitive Services**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 4. API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 5. 리μμ€ μ΄λ¦μ νκ²½ λ³μλ‘ μ€μ : | |
| ```bash | |
| AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX opencode | |
| ``` | |
| λλ bash νλ‘νμ μΆκ°: | |
| ```bash title="~/.bash_profile" | |
| export AZURE_COGNITIVE_SERVICES_RESOURCE_NAME=XXX | |
| ``` | |
| 6. `/models` λͺ λ Ήμ μ€ννμ¬ λ°°ν¬λ λͺ¨λΈμ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Baseten | |
| 1. [Baseten](https://app.baseten.co/)μΌλ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Baseten**μ κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Baseten API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. λͺ¨λΈμ μ ννλ €λ©΄ `/models` λͺ λ Ήμ μ€ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Cerebras | |
| 1. [Cerebras μ½μ](https://inference.cerebras.ai/)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Cerebras**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Cerebras API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _Qwen 3 Coder 480B_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Cloudflare AI Gateway | |
| Cloudflare AI Gatewayλ OpenAI, Anthropic, Workers AI λ±μ λͺ¨λΈμ μ‘μΈμ€ν μ μμΌλ©°, ν΅ν©λ μλν¬μΈνΈλ₯Ό ν΅ν΄ λ λ§μ κΈ°λ₯μ μ 곡ν©λλ€. [Unified Billing](https://developers.cloudflare.com/ai-gateway/features/unified-billing/)μ μ¬μ©νλ©΄ κ° κ³΅κΈμμ λ³λ API ν€κ° νμνμ§ μμ΅λλ€. | |
| 1. [Cloudflare λμ보λ](https://dash.cloudflare.com/)λ‘ μ΄λνμ¬, **AI** > **AI Gateway**λ‘ κ°μ μλ‘μ΄ κ²μ΄νΈμ¨μ΄λ₯Ό λ§λλλ€. | |
| 2. κ³μ ID λ° Gateway IDλ₯Ό νκ²½ λ³μλ‘ μ€μ νμμμ€. | |
| ```bash title="~/.bash_profile" | |
| export CLOUDFLARE_ACCOUNT_ID=your-32-character-account-id | |
| export CLOUDFLARE_GATEWAY_ID=your-gateway-id | |
| ``` | |
| 3. `/connect` λͺ λ Ήμ μ€ννκ³ **Cloudflare AI Gateway**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 4. Cloudflare API ν ν°μ μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| λλ νκ²½ λ³μλ‘ μ€μ ν©λλ€. | |
| ```bash title="~/.bash_profile" | |
| export CLOUDFLARE_API_TOKEN=your-api-token | |
| ``` | |
| 5. λͺ¨λΈμ μ ννλ €λ©΄ `/models` λͺ λ Ήμ μ€ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| OpenCode ꡬμ±μ ν΅ν΄ λͺ¨λΈμ μΆκ°ν μ μμ΅λλ€. | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "cloudflare-ai-gateway": { | |
| "models": { | |
| "openai/gpt-4o": {}, | |
| "anthropic/claude-sonnet-4": {} | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| ### Cortecs | |
| 1. [Cortecs μ½μ](https://cortecs.ai/)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Cortecs**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Cortecs API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _Kimi K2 Instruct_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### DeepSeek | |
| 1. [DeepSeek μ½μ](https://platform.deepseek.com/)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ **API Keys**λ₯Ό ν΄λ¦νμ¬ ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **DeepSeek**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. DeepSeek API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ DeepSeek λͺ¨λΈ(μ: _DeepSeek V4 Pro_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Deep Infra | |
| 1. [Deep Infra λμ보λ](https://deepinfra.com/dash)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Deep Infra**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Deep Infra API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. λͺ¨λΈμ μ ννλ €λ©΄ `/models` λͺ λ Ήμ μ€ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### FrogBot | |
| 1. [FrogBot λμ보λ](https://app.frogbot.ai/signup)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **FrogBot**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. FrogBot API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. λͺ¨λΈμ μ ννλ €λ©΄ `/models` λͺ λ Ήμ μ€ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Fireworks AI | |
| 1. [Fireworks AI μ½μ](https://app.fireworks.ai/)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ **API Keys**λ₯Ό ν΄λ¦ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Fireworks AI**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Fireworks AI API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _Kimi K2 Instruct_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### GitLab Duo | |
| GitLab Duoλ GitLabμ Anthropic νλ‘μλ₯Ό ν΅ν΄ κΈ°λ³Έ λꡬ νΈμΆ κΈ°λ₯μ κ°μΆ AI κΈ°λ° μμ΄μ νΈ μ±ν μ μ 곡ν©λλ€. | |
| 1. `/connect` λͺ λ Ήμ μ€ννκ³ GitLabμ μ νν©λλ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 2. μΈμ¦ λ°©λ²μ μ ννμμμ€: | |
| ```txt | |
| β Select auth method | |
| β | |
| β OAuth (Recommended) | |
| β Personal Access Token | |
| β | |
| ``` | |
| #### OAuth μ¬μ© (κΆμ₯) | |
| **OAuth**λ₯Ό μ ννλ©΄ λΈλΌμ°μ κ° μ΄λ¦¬κ³ μΈμ¦μ μμ²ν©λλ€. | |
| #### κ°μΈ μ‘μΈμ€ ν ν° μ¬μ© | |
| 1. [GitLab User Settings > Access Tokens](https://gitlab.com/-/user_settings/personal_access_tokens)λ‘ μ΄λ | |
| 2. **Add new token** ν΄λ¦ | |
| 3. μ΄λ¦: `OpenCode`, λ²μ: `api` | |
| 4. ν ν° λ³΅μ¬ (`glpat-`λ‘ μμ) | |
| 5. ν°λ―Έλμ μ λ ₯ | |
| 3. `/models` λͺ λ Ήμ μ€ννμ¬ μ¬μ© κ°λ₯ν λͺ¨λΈμ νμΈνμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| μΈ κ°μ§ Claude κΈ°λ° λͺ¨λΈμ μ¬μ©ν μ μμ΅λλ€: | |
| - **duo-chat-haiku-4-5** (κΈ°λ³Έκ°) - λΉ λ₯Έ μμ μ μν λΉ λ₯Έ μλ΅ | |
| - **duo-chat-sonnet-4-5** - λλΆλΆμ μν¬νλ‘μ°μ κ· ν μ‘ν μ±λ₯ | |
| - **duo-chat-opus-4-5** - 볡μ‘ν λΆμμ μ ν© | |
| :::note | |
| `GITLAB_TOKEN` νκ²½ λ³μλ₯Ό μ§μ νμ¬ ν ν°μ μ μ₯νμ§ μκ³ μ¬μ©ν μλ μμ΅λλ€. | |
| ::: | |
| #### μ ν νΈμ€ν GitLab | |
| :::note[κ·μ μ€μ μ°Έκ³ μ¬ν] | |
| OpenCodeλ μΈμ μ λͺ© μμ±κ³Ό κ°μ μΌλΆ AI μμ μ μν΄ μμ λͺ¨λΈμ μ¬μ©ν©λλ€. | |
| κΈ°λ³Έμ μΌλ‘ Zenμμ νΈμ€ν λλ gpt-5-nanoλ₯Ό μ¬μ©νλλ‘ κ΅¬μ±λ©λλ€. | |
| OpenCodeλ₯Ό μ체 νΈμ€ν GitLab μΈμ€ν΄μ€λ§ μ¬μ©νλλ‘ μ ννλ €λ©΄ `opencode.json` νμΌμ λ€μμ μΆκ°νμμμ€. | |
| μΈμ 곡μ λ₯Ό λΉνμ±ννλ κ²λ κΆμ₯ν©λλ€. | |
| ```json | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "small_model": "gitlab/duo-chat-haiku-4-5", | |
| "share": "disabled" | |
| } | |
| ``` | |
| ::: | |
| μ체 νΈμ€ν GitLab μΈμ€ν΄μ€μ κ²½μ°: | |
| ```bash | |
| export GITLAB_INSTANCE_URL=https://gitlab.company.com | |
| export GITLAB_TOKEN=glpat-... | |
| ``` | |
| μΈμ€ν΄μ€κ° μ¬μ©μ μ μ AI Gatewayλ₯Ό μ€ννλ κ²½μ°: | |
| ```bash | |
| GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com | |
| ``` | |
| λλ bash νλ‘νμ μΆκ°: | |
| ```bash title="~/.bash_profile" | |
| export GITLAB_INSTANCE_URL=https://gitlab.company.com | |
| export GITLAB_AI_GATEWAY_URL=https://ai-gateway.company.com | |
| export GITLAB_TOKEN=glpat-... | |
| ``` | |
| :::note | |
| GitLab κ΄λ¦¬μλ λ€μμ νμ±νν΄μΌ ν©λλ€: | |
| 1. [Duo Agent Platform](https://docs.gitlab.com/user/duo_agent_platform/turn_on_off/) (μ¬μ©μ, κ·Έλ£Ή λλ μΈμ€ν΄μ€) | |
| 2. κΈ°λ₯ νλκ·Έ (Rails μ½μμ ν΅ν΄): | |
| - `agent_platform_claude_code` | |
| - `third_party_agents_enabled` | |
| ::: | |
| #### μ ν νΈμ€ν μΈμ€ν΄μ€μ© OAuth | |
| μ체 νΈμ€ν μΈμ€ν΄μ€μ λν΄ OAuthλ₯Ό μλμν€λ €λ©΄ μλ‘μ΄ μ ν리μΌμ΄μ (Settings β Applications)μ λ§λ€μ΄μΌ ν©λλ€. | |
| μ½λ°± URL `http://127.0.0.1:8080/callback` λ° λ€μ λ²μκ° νμν©λλ€: | |
| - api (μ¬μ©μ λμ API μ‘μΈμ€) | |
| - read_user (κ°μΈ μ 보 μ½κΈ°) | |
| - read_repository (리ν¬μ§ν 리 μ½κΈ° μ μ© μ‘μΈμ€) | |
| κ·Έλ° λ€μ μ ν리μΌμ΄μ IDλ₯Ό νκ²½ λ³μλ‘ λ ΈμΆνμμμ€: | |
| ```bash | |
| export GITLAB_OAUTH_CLIENT_ID=your_application_id_here | |
| ``` | |
| [opencode-gitlab-auth](https://www.npmjs.com/package/opencode-gitlab-auth) ννμ΄μ§μ μΆκ° λ¬Έμκ° μμ΅λλ€. | |
| #### κ΅¬μ± | |
| `opencode.json`μ ν΅ν΄ μ¬μ©μ μ μ: | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "gitlab": { | |
| "options": { | |
| "instanceUrl": "https://gitlab.com" | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| #### GitLab API λꡬ (μ ν μ¬νμ΄μ§λ§ κ°λ ₯ κΆμ₯) | |
| GitLab λꡬ(λ³ν© μμ², μ΄μ, νμ΄νλΌμΈ, CI/CD λ±)μ μ‘μΈμ€νλ €λ©΄: | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "plugin": ["opencode-gitlab-plugin"] | |
| } | |
| ``` | |
| μ΄ νλ¬κ·ΈμΈμ MR 리뷰, μ΄μ μΆμ , νμ΄νλΌμΈ λͺ¨λν°λ§ λ±μ ν¬ν¨ν ν¬κ΄μ μΈ GitLab 리ν¬μ§ν 리 κ΄λ¦¬ κΈ°λ₯μ μ 곡ν©λλ€. | |
| ### GitHub Copilot | |
| OpenCodeμμ GitHub Copilot ꡬλ μ μ¬μ©νλ €λ©΄: | |
| :::note | |
| μΌλΆ λͺ¨λΈμ [Pro+ ꡬλ ](https://github.com/features/copilot/plans)μ΄ νμν μ μμ΅λλ€. | |
| ::: | |
| 1. `/connect` λͺ λ Ήμ μ€ννκ³ GitHub Copilotμ κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 2. [github.com/login/device](https://github.com/login/device)λ‘ μ΄λνμ¬ μ½λλ₯Ό μ λ ₯ν©λλ€. | |
| ```txt | |
| β Login with GitHub Copilot | |
| β | |
| β https://github.com/login/device | |
| β | |
| β Enter code: 8F43-6FCF | |
| β | |
| β Waiting for authorization... | |
| β | |
| ``` | |
| 3. μ΄μ μνλ λͺ¨λΈμ μ ννκΈ° μν΄ `/models` λͺ λ Ήμ μ€νν©λλ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Google Vertex AI | |
| OpenCodeλ‘ Google Vertex AIλ₯Ό μ¬μ©νλ €λ©΄: | |
| 1. Google Cloud Consoleμ **Model Garden**μΌλ‘ μ΄λνμ¬ ν΄λΉ 리μ μμ μ¬μ© κ°λ₯ν λͺ¨λΈμ νμΈνμμμ€. | |
| :::note | |
| Vertex AI APIκ° νμ±νλ Google Cloud νλ‘μ νΈκ° μμ΄μΌ ν©λλ€. | |
| ::: | |
| 2. νμν νκ²½ λ³μλ₯Ό μ€μ : | |
| - `GOOGLE_CLOUD_PROJECT`: κ΅¬κΈ ν΄λΌμ°λ νλ‘μ νΈ ID | |
| - `VERTEX_LOCATION` (μ ν): Vertex AI 리μ (κΈ°λ³Έκ°: `global`) | |
| - μΈμ¦ (νλ μ ν): | |
| - `GOOGLE_APPLICATION_CREDENTIALS`: μλΉμ€ κ³μ JSON ν€ νμΌ κ²½λ‘ | |
| - gcloud CLI μ¬μ©: `gcloud auth application-default login` | |
| OpenCodeλ₯Ό μ€νν λ μ€μ : | |
| ```bash | |
| GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json GOOGLE_CLOUD_PROJECT=your-project-id opencode | |
| ``` | |
| λλ bash νλ‘νμ μΆκ°: | |
| ```bash title="~/.bash_profile" | |
| export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json | |
| export GOOGLE_CLOUD_PROJECT=your-project-id | |
| export VERTEX_LOCATION=global | |
| ``` | |
| :::tip | |
| `global` 리μ μ κ°μ©μ±μ λμ΄κ³ μ€λ₯λ₯Ό μ€μ΄λ©° μΆκ° λΉμ©μ΄ μμ΅λλ€. λ°μ΄ν° κ±°μ£Ό μκ±΄μ΄ μλ κ²½μ° μ§μ μλν¬μΈνΈ(μ: `us-central1`)λ₯Ό μ¬μ©νμμμ€. [λ μμ보기](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models#regional_and_global_endpoints) | |
| ::: | |
| 3. `/models` λͺ λ Ήμ μ€ννμ¬ μνλ λͺ¨λΈμ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Groq | |
| 1. [Groq μ½μ](https://console.groq.com/)λ‘ μ΄λνμ¬ **Create API Key**λ₯Ό ν΄λ¦νκ³ ν€λ₯Ό 볡μ¬ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ Groqλ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ μνλ λͺ¨λΈμ μ νν©λλ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Hugging Face | |
| [Hugging Face Inference Providers](https://huggingface.co/docs/inference-providers)λ 17κ° μ΄μμ 곡κΈμκ° μ§μνλ μ€ν λͺ¨λΈμ λν μ‘μΈμ€λ₯Ό μ 곡ν©λλ€. | |
| 1. [Hugging Face settings](https://huggingface.co/settings/tokens/new?ownUserPermissions=inference.serverless.write&tokenType=fineGrained)λ‘ μ΄λνμ¬ Inference Providersμ νΈμΆν κΆνμ΄ μλ ν ν°μ μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Hugging Face**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Hugging Face ν ν°μ μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _Kimi-K2-Instruct_ λλ _GLM-4.6_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Helicone | |
| [Helicone](https://helicone.ai)λ AI μ ν리μΌμ΄μ μ μν λ‘κΉ , λͺ¨λν°λ§ λ° λΆμ κΈ°λ₯μ μ 곡νλ LLM κ΄μ°° κ°λ₯μ±(Observability) νλ«νΌμ λλ€. Helicone AI Gatewayλ λͺ¨λΈμ κΈ°λ°μΌλ‘ μ μ ν 곡κΈμμκ² μμ²μ μλμΌλ‘ λΌμ°ν ν©λλ€. | |
| 1. [Helicone](https://helicone.ai)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ λμ보λμμ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Helicone**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Helicone API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈμ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| μΊμ± λ° μλ μ νκ³Ό κ°μ λ λ§μ 곡κΈμμ κ³ κΈ κΈ°λ₯μ [Helicone λ¬Έμ](https://docs.helicone.ai)λ₯Ό νμΈνμμμ€. | |
| #### μ νμ κ΅¬μ± | |
| OpenCodeλ₯Ό ν΅ν΄ μλμΌλ‘ ꡬμ±λμ§ μλ Heliconeμ κΈ°λ₯μ΄λ λͺ¨λΈμ΄ μλ κ²½μ° μ§μ ꡬμ±ν μ μμ΅λλ€. | |
| [Heliconeμ λͺ¨λΈ λλ ν 리](https://helicone.ai/models)μμ μΆκ°νλ €λ λͺ¨λΈμ IDλ₯Ό νμΈνμμμ€. | |
| ```jsonc title="~/.config/opencode/opencode.jsonc" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "helicone": { | |
| "npm": "@ai-sdk/openai-compatible", | |
| "name": "Helicone", | |
| "options": { | |
| "baseURL": "https://ai-gateway.helicone.ai", | |
| }, | |
| "models": { | |
| "gpt-4o": { | |
| // Model ID (from Helicone's model directory page) | |
| "name": "GPT-4o", // Your own custom name for the model | |
| }, | |
| "claude-sonnet-4-20250514": { | |
| "name": "Claude Sonnet 4", | |
| }, | |
| }, | |
| }, | |
| }, | |
| } | |
| ``` | |
| #### μ¬μ©μ μ μ ν€λ | |
| Heliconeλ μΊμ±, μ¬μ©μ μΆμ λ° μΈμ κ΄λ¦¬μ κ°μ κΈ°λ₯μ μν μ¬μ©μ μ μ ν€λλ₯Ό μ§μν©λλ€. `options.headers`λ₯Ό μ¬μ©νμ¬ κ³΅κΈμ ꡬμ±μ μΆκ°νμμμ€: | |
| ```jsonc title="~/.config/opencode/opencode.jsonc" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "helicone": { | |
| "npm": "@ai-sdk/openai-compatible", | |
| "name": "Helicone", | |
| "options": { | |
| "baseURL": "https://ai-gateway.helicone.ai", | |
| "headers": { | |
| "Helicone-Cache-Enabled": "true", | |
| "Helicone-User-Id": "opencode", | |
| }, | |
| }, | |
| }, | |
| }, | |
| } | |
| ``` | |
| ##### μΈμ μΆμ | |
| Heliconeμ [Sessions](https://docs.helicone.ai/features/sessions) κΈ°λ₯μ μ¬μ©νλ©΄ κ΄λ ¨ LLM μμ²μ κ·Έλ£Ήνν μ μμ΅λλ€. [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) νλ¬κ·ΈμΈμ μ¬μ©νμ¬ κ° OpenCode λνλ₯Ό Helicone μΈμ μΌλ‘ μλ κΈ°λ‘νμμμ€. | |
| ```bash | |
| npm install -g opencode-helicone-session | |
| ``` | |
| μ€μ μ μΆκ°νμμμ€. | |
| ```json title="opencode.json" | |
| { | |
| "plugin": ["opencode-helicone-session"] | |
| } | |
| ``` | |
| μ΄ νλ¬κ·ΈμΈμ `Helicone-Session-Id` λ° `Helicone-Session-Name` ν€λλ₯Ό μμ²μ μ£Όμ ν©λλ€. Heliconeμ μΈμ νμ΄μ§μμ κ° OpenCode λνκ° λ³λμ μΈμ μΌλ‘ λμ΄λλ κ²μ λ³Ό μ μμ΅λλ€. | |
| ##### κ³΅ν΅ Helicone ν€λ | |
| | ν€λ | μ€λͺ | | |
| | -------------------------- | ---------------------------------------------------------- | | |
| | `Helicone-Cache-Enabled` | μλ΅ μΊμ± νμ±ν (`true`/`false`) | | |
| | `Helicone-User-Id` | μ¬μ©μλ³ μ§ν μΆμ | | |
| | `Helicone-Property-[Name]` | μ¬μ©μ μ μ μμ± μΆκ°(μ: `Helicone-Property-Environment`) | | |
| | `Helicone-Prompt-Id` | μμ²μ ν둬ννΈ λ²μ κ³Ό μ°κ΄ | | |
| μ¬μ© κ°λ₯ν λͺ¨λ ν€λλ [Helicone Header Directory](https://docs.helicone.ai/helicone-headers/header-directory)λ₯Ό μ°Έμ‘°νμμμ€. | |
| ### llama.cpp | |
| [llama.cpp](https://github.com/ggml-org/llama.cpp)μ llama-server μ νΈλ¦¬ν°λ₯Ό ν΅ν΄ λ‘컬 λͺ¨λΈμ μ¬μ©νλλ‘ κ΅¬μ±ν μ μμ΅λλ€. | |
| ```json title="opencode.json" "llama.cpp" {5, 6, 8, 10-15} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "llama.cpp": { | |
| "npm": "@ai-sdk/openai-compatible", | |
| "name": "llama-server (local)", | |
| "options": { | |
| "baseURL": "http://127.0.0.1:8080/v1" | |
| }, | |
| "models": { | |
| "qwen3-coder:a3b": { | |
| "name": "Qwen3-Coder: a3b-30b (local)", | |
| "limit": { | |
| "context": 128000, | |
| "output": 65536 | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| μ΄ μμ μμ: | |
| - `llama.cpp`λ μ¬μ©μ μ μ 곡κΈμ IDμ λλ€. μνλ λ¬Έμμ΄λ‘ μ§μ ν μ μμ΅λλ€. | |
| - `npm`μ μ΄ κ³΅κΈμμ μ¬μ©ν ν¨ν€μ§λ₯Ό μ§μ ν©λλ€. μ¬κΈ°μλ OpenAI νΈν APIλ₯Ό μν΄ `@ai-sdk/openai-compatible`μ μ¬μ©ν©λλ€. | |
| - `name`μ UIμ νμλ 곡κΈμ μ΄λ¦μ λλ€. | |
| - `options.baseURL`μ λ‘컬 μλ²μ μλν¬μΈνΈμ λλ€. | |
| - `models`λ λͺ¨λΈ IDμ ν΄λΉ ꡬμ±μ λ§€νν©λλ€. λͺ¨λΈ μ΄λ¦μ λͺ¨λΈ μ ν λͺ©λ‘μ νμλ©λλ€. | |
| ### IO.NET | |
| IO.NETμ λ€μν μ¬μ© μ¬λ‘μ μ΅μ νλ 17κ°μ λͺ¨λΈμ μ 곡ν©λλ€: | |
| 1. [IO.NET μ½μ](https://ai.io.net/)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **IO.NET**μ κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. IO.NET API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. λͺ¨λΈμ μ ννλ €λ©΄ `/models` λͺ λ Ήμ μ€ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### LM Studio | |
| LM Studioλ₯Ό ν΅ν΄ λ‘컬 λͺ¨λΈμ μ¬μ©νλλ‘ κ΅¬μ±ν μ μμ΅λλ€. | |
| ```json title="opencode.json" "lmstudio" {5, 6, 8, 10-14} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "lmstudio": { | |
| "npm": "@ai-sdk/openai-compatible", | |
| "name": "LM Studio (local)", | |
| "options": { | |
| "baseURL": "http://127.0.0.1:1234/v1" | |
| }, | |
| "models": { | |
| "google/gemma-3n-e4b": { | |
| "name": "Gemma 3n-e4b (local)" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| μ΄ μμ μμ: | |
| - `lmstudio`λ μ¬μ©μ μ μ 곡κΈμ IDμ λλ€. μνλ λ¬Έμμ΄λ‘ μ§μ ν μ μμ΅λλ€. | |
| - `npm`μ μ΄ κ³΅κΈμμ μ¬μ©ν ν¨ν€μ§λ₯Ό μ§μ ν©λλ€. μ¬κΈ°μλ OpenAI νΈν APIλ₯Ό μν΄ `@ai-sdk/openai-compatible`μ μ¬μ©ν©λλ€. | |
| - `name`μ UIμ νμλ 곡κΈμ μ΄λ¦μ λλ€. | |
| - `options.baseURL`μ λ‘컬 μλ²μ μλν¬μΈνΈμ λλ€. | |
| - `models`λ λͺ¨λΈ IDμ ν΄λΉ ꡬμ±μ λ§€νν©λλ€. λͺ¨λΈ μ΄λ¦μ λͺ¨λΈ μ ν λͺ©λ‘μ νμλ©λλ€. | |
| ### Moonshot AI | |
| Moonshot AIμμ Kimi K2λ₯Ό μ¬μ©νλ €λ©΄: | |
| 1. [Moonshot AI μ½μ](https://platform.moonshot.ai/console)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ **Create API key**λ₯Ό ν΄λ¦ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Moonshot AI**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Moonshot API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ *Kimi K2*λ₯Ό μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### MiniMax | |
| 1. [MiniMax API μ½μ](https://platform.minimax.io/login)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **MiniMax**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. MiniMax API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _M2.1_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Nebius Token Factory | |
| 1. [Nebius Token Factory μ½μ](https://tokenfactory.nebius.com/)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ **Add Key**λ₯Ό ν΄λ¦ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Nebius Token Factory**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Nebius Token Factory API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _Kimi K2 Instruct_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Ollama | |
| Ollamaλ₯Ό ν΅ν΄ λ‘컬 λͺ¨λΈμ μ¬μ©νλλ‘ κ΅¬μ±ν μ μμ΅λλ€. | |
| :::tip | |
| Ollamaλ OpenCodeμ λν΄ μλμΌλ‘ ꡬμ±λ μ μμ΅λλ€. μμΈν λ΄μ©μ [Ollama ν΅ν© λ¬Έμ](https://docs.ollama.com/integrations/opencode)λ₯Ό μ°Έμ‘°νμμμ€. | |
| ::: | |
| ```json title="opencode.json" "ollama" {5, 6, 8, 10-14} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "ollama": { | |
| "npm": "@ai-sdk/openai-compatible", | |
| "name": "Ollama (local)", | |
| "options": { | |
| "baseURL": "http://localhost:11434/v1" | |
| }, | |
| "models": { | |
| "llama2": { | |
| "name": "Llama 2" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| μ΄ μμ μμ: | |
| - `ollama`λ μ¬μ©μ μ μ 곡κΈμ IDμ λλ€. μνλ λ¬Έμμ΄λ‘ μ§μ ν μ μμ΅λλ€. | |
| - `npm`μ μ΄ κ³΅κΈμμ μ¬μ©ν ν¨ν€μ§λ₯Ό μ§μ ν©λλ€. μ¬κΈ°μλ OpenAI νΈν APIλ₯Ό μν΄ `@ai-sdk/openai-compatible`μ μ¬μ©ν©λλ€. | |
| - `name`μ UIμ νμλ 곡κΈμ μ΄λ¦μ λλ€. | |
| - `options.baseURL`μ λ‘컬 μλ²μ μλν¬μΈνΈμ λλ€. | |
| - `models`λ λͺ¨λΈ IDμ ν΄λΉ ꡬμ±μ λ§€νν©λλ€. λͺ¨λΈ μ΄λ¦μ λͺ¨λΈ μ ν λͺ©λ‘μ νμλ©λλ€. | |
| :::tip | |
| λꡬ νΈμΆμ΄ μλνμ§ μλ κ²½μ°, Ollamaμμ `num_ctx`λ₯Ό λλ €λ³΄μμμ€. 16k - 32k μ λμμ μμνμμμ€. | |
| ::: | |
| ### Ollama Cloud | |
| OpenCodeλ‘ Ollama Cloudλ₯Ό μ¬μ©νλ €λ©΄: | |
| 1. [https://ollama.com/](https://ollama.com/)μΌλ‘ μ΄λνμ¬ λ‘κ·ΈμΈνκ±°λ κ³μ μ λ§λλλ€. | |
| 2. **Settings** > **Keys**λ‘ μ΄λνμ¬ **Add API Key**λ₯Ό ν΄λ¦ν΄ μ API ν€λ₯Ό μμ±ν©λλ€. | |
| 3. OpenCodeμμ μ¬μ©ν API ν€λ₯Ό 볡μ¬ν©λλ€. | |
| 4. `/connect` λͺ λ Ήμ μ€ννκ³ **Ollama Cloud**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 5. Ollama Cloud API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 6. **μ€μ**: OpenCodeμμ ν΄λΌμ°λ λͺ¨λΈμ μ¬μ©νκΈ° μ μ, λ‘컬μμ λͺ¨λΈ μ 보λ₯Ό κ°μ ΈμμΌ ν©λλ€: | |
| ```bash | |
| ollama pull gpt-oss:20b-cloud | |
| ``` | |
| 7. `/models` λͺ λ Ήμ μ€ννμ¬ Ollama Cloud λͺ¨λΈμ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### OpenAI | |
| [ChatGPT Plus λλ Pro](https://chatgpt.com/pricing)μ κ°μ νλ κ²μ΄ μ’μ΅λλ€. | |
| 1. κ°μ ν `/connect` λͺ λ Ήμ μ€ννκ³ OpenAIλ₯Ό μ ννμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 2. **ChatGPT Plus/Pro** μ΅μ μ μ ννλ©΄ λΈλΌμ°μ κ° μ΄λ¦¬κ³ μΈμ¦μ μμ²ν©λλ€. | |
| ```txt | |
| β Select auth method | |
| β | |
| β ChatGPT Plus/Pro | |
| β Manually enter API Key | |
| β | |
| ``` | |
| 3. μ΄μ `/models` λͺ λ Ήμ μ¬μ©ν λ λͺ¨λ OpenAI λͺ¨λΈμ μ¬μ©ν μ μμ΅λλ€. | |
| ```txt | |
| /models | |
| ``` | |
| ##### API ν€ μ¬μ© | |
| μ΄λ―Έ API ν€κ° μλ€λ©΄ **Manually enter API Key**λ₯Ό μ ννκ³ ν°λ―Έλμ λΆμ¬λ£μ μ μμ΅λλ€. | |
| ### OpenCode Zen | |
| OpenCode Zenμ OpenCode νμμ μ 곡νλ ν μ€νΈ λ° κ²μ¦λ λͺ¨λΈ λͺ©λ‘μ λλ€. [λ μμ보기](/docs/zen). | |
| 1. **<a href={console}>OpenCode Zen</a>**μ λ‘κ·ΈμΈνκ³ **Create API Key**λ₯Ό ν΄λ¦ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **OpenCode Zen**μ κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. OpenCode API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _Qwen 3 Coder 480B_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### OpenRouter | |
| 1. [OpenRouter λμ보λ](https://openrouter.ai/settings/keys)λ‘ μ΄λνμ¬ **Create API Key**λ₯Ό ν΄λ¦νκ³ ν€λ₯Ό 볡μ¬ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ OpenRouterλ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. λ§μ OpenRouter λͺ¨λΈμ κΈ°λ³Έμ μΌλ‘ 미리 λ‘λλμ΄ μμΌλ―λ‘ `/models` λͺ λ Ήμ μ€ννμ¬ μνλ κ²μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| OpenCode ꡬμ±μ ν΅ν΄ λͺ¨λΈμ μΆκ°ν μλ μμ΅λλ€. | |
| ```json title="opencode.json" {6} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "openrouter": { | |
| "models": { | |
| "somecoolnewmodel": {} | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| 5. λν OpenCode ꡬμ±μ ν΅ν΄ μ¬μ©μ μ μν μλ μμ΅λλ€. λ€μμ 곡κΈμ μμλ₯Ό μ§μ νλ μμ λλ€. | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "openrouter": { | |
| "models": { | |
| "moonshotai/kimi-k2": { | |
| "options": { | |
| "provider": { | |
| "order": ["baseten"], | |
| "allow_fallbacks": false | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| ### SAP AI Core | |
| SAP AI Coreλ OpenAI, Anthropic, Google, Amazon, Meta, Mistral λ° AI21μ 40κ° μ΄μμ λͺ¨λΈμ λν μ‘μΈμ€λ₯Ό μ 곡ν©λλ€. | |
| 1. [SAP BTP Cockpit](https://account.hana.ondemand.com/)μΌλ‘ μ΄λνμ¬ SAP AI Core μλΉμ€ μΈμ€ν΄μ€λ‘ μ΄λνκ³ μλΉμ€ ν€λ₯Ό λ§λλλ€. | |
| :::tip | |
| μλΉμ€ ν€λ `clientid`, `clientsecret`, `url` λ° `serviceurls.AI_API_URL`μ ν¬ν¨νλ JSON κ°μ²΄μ λλ€. **Services** > **Instances and Subscriptions** μλμμ AI Core μΈμ€ν΄μ€λ₯Ό μ°Ύμ μ μμ΅λλ€. | |
| ::: | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **SAP AI Core**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. μλΉμ€ ν€ JSONμ μ λ ₯νμμμ€. | |
| ```txt | |
| β Service key | |
| β | |
| β | |
| β enter | |
| ``` | |
| λλ `AICORE_SERVICE_KEY` νκ²½ λ³μλ₯Ό μ€μ ν©λλ€: | |
| ```bash | |
| AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' opencode | |
| ``` | |
| λλ bash νλ‘νμ μΆκ°ν©λλ€: | |
| ```bash title="~/.bash_profile" | |
| export AICORE_SERVICE_KEY='{"clientid":"...","clientsecret":"...","url":"...","serviceurls":{"AI_API_URL":"..."}}' | |
| ``` | |
| 4. μ νμ μΌλ‘ λ°°ν¬ ID λ° λ¦¬μμ€ κ·Έλ£Ήμ μ€μ ν©λλ€: | |
| ```bash | |
| AICORE_DEPLOYMENT_ID=your-deployment-id AICORE_RESOURCE_GROUP=your-resource-group opencode | |
| ``` | |
| :::note | |
| μ΄ μ€μ μ μ ν μ¬νμ΄λ©° SAP AI Core μ€μ μ λ°λΌ ꡬμ±ν΄μΌ ν©λλ€. | |
| ::: | |
| 5. `/models` λͺ λ Ήμ μ€ννμ¬ 40κ° μ΄μμ μ¬μ© κ°λ₯ν λͺ¨λΈ μ€μμ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### STACKIT | |
| STACKIT AI Model Servingμ Llama, Mistral, Qwenκ³Ό κ°μ LLMμ μ΄μ μ λ§μΆκ³ μ λ½ μΈνλΌμμ λ°μ΄ν° μ£ΌκΆμ μ΅λν 보μ₯νλ μμ κ΄λ¦¬ν AI λͺ¨λΈ νΈμ€ν νκ²½μ μ 곡ν©λλ€. | |
| 1. [STACKIT Portal](https://portal.stackit.cloud)λ‘ μ΄λνμ¬ **AI Model Serving**μΌλ‘ μ΄λν λ€μ νλ‘μ νΈμ μΈμ¦ ν ν°μ λ§λλλ€. | |
| :::tip | |
| μΈμ¦ ν ν°μ λ§λ€κΈ° μ μ STACKIT κ³ κ° κ³μ , μ¬μ©μ κ³μ λ° νλ‘μ νΈκ° νμν©λλ€. | |
| ::: | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **STACKIT**μ κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. STACKIT AI Model Serving μΈμ¦ ν ν°μ μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ _Qwen3-VL 235B_ λλ *Llama 3.3 70B*μ κ°μ μ¬μ© κ°λ₯ν λͺ¨λΈμ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### OVHcloud AI Endpoints | |
| 1. [OVHcloud ν¨λ](https://ovh.com/manager)λ‘ μ΄λν©λλ€. `Public Cloud` μΉμ μΌλ‘ μ΄λνμ¬ `AI & Machine Learning` > `AI Endpoints`λ‘ κ° λ€ `API Keys` νμμ **Create a new API key**λ₯Ό ν΄λ¦ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **OVHcloud AI Endpoints**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. OVHcloud AI Endpoints API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _gpt-oss-120b_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Scaleway | |
| OpenCodeλ‘ [Scaleway Generative APIs](https://www.scaleway.com/en/docs/generative-apis/)λ₯Ό μ¬μ©νλ €λ©΄: | |
| 1. [Scaleway Console IAM μ€μ ](https://console.scaleway.com/iam/api-keys)μμ μ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Scaleway**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Scaleway API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _devstral-2-123b-instruct-2512_ λλ _gpt-oss-120b_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Together AI | |
| 1. [Together AI μ½μ](https://api.together.ai)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ **Add Key**λ₯Ό ν΄λ¦ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Together AI**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Together AI API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _Kimi K2 Instruct_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Venice AI | |
| 1. [Venice AI μ½μ](https://venice.ai)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Venice AI**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Venice AI API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _Llama 3.3 70B_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Vercel AI Gateway | |
| Vercel AI Gatewayλ OpenAI, Anthropic, Google, xAI λ±μ λͺ¨λΈμ μ‘μΈμ€ν μ μμΌλ©°, ν΅ν©λ μλν¬μΈνΈλ₯Ό ν΅ν΄ λ λ§μ κΈ°λ₯μ μ 곡ν©λλ€. λͺ¨λΈμ λ§ν¬μ μμ΄ μ κ°λ‘ μ 곡λ©λλ€. | |
| 1. [Vercel λμ보λ](https://vercel.com/)λ‘ μ΄λνμ¬ **AI Gateway** νμΌλ‘ κ° λ€, **API keys**λ₯Ό ν΄λ¦νμ¬ μ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Vercel AI Gateway**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. Vercel AI Gateway API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈμ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| OpenCode ꡬμ±μ ν΅ν΄ λͺ¨λΈμ μ¬μ©μ μ μν μλ μμ΅λλ€. λ€μμ 곡κΈμ λΌμ°ν μμλ₯Ό μ§μ νλ μμ λλ€. | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "vercel": { | |
| "models": { | |
| "anthropic/claude-sonnet-4": { | |
| "options": { | |
| "order": ["anthropic", "vertex"] | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| λͺ κ°μ§ μ μ©ν λΌμ°ν μ΅μ : | |
| | μ΅μ | μ€λͺ | | |
| | ------------------- | --------------------------------- | | |
| | `order` | μλν 곡κΈμ μμ | | |
| | `only` | νΉμ 곡κΈμλ‘ μ ν | | |
| | `zeroDataRetention` | λ°μ΄ν° 보μ μ μ± μ΄ μλ κ³³λ§ μ¬μ© | | |
| ### xAI | |
| 1. [xAI μ½μ](https://console.x.ai/)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ API ν€λ₯Ό μμ±ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **xAI**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. xAI API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _Grok Beta_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### Z.AI | |
| 1. [Z.AI API μ½μ](https://z.ai/manage-apikey/apikey-list)λ‘ μ΄λνμ¬ κ³μ μ λ§λ€κ³ **Create a new API key**λ₯Ό ν΄λ¦ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ **Z.AI**λ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| **GLM Coding Plan**μ κ°μ νλ€λ©΄ **Z.AI Coding Plan**μ μ ννμμμ€. | |
| 3. Z.AI API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. `/models` λͺ λ Ήμ μ€ννμ¬ λͺ¨λΈ(μ: _GLM-4.7_)μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| ### ZenMux | |
| 1. [ZenMux λμ보λ](https://zenmux.ai/settings/keys)λ‘ μ΄λνμ¬ **Create API Key**λ₯Ό ν΄λ¦νκ³ ν€λ₯Ό 볡μ¬ν©λλ€. | |
| 2. `/connect` λͺ λ Ήμ μ€ννκ³ ZenMuxλ₯Ό κ²μνμμμ€. | |
| ```txt | |
| /connect | |
| ``` | |
| 3. API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```txt | |
| β API key | |
| β | |
| β | |
| β enter | |
| ``` | |
| 4. λ§μ ZenMux λͺ¨λΈμ κΈ°λ³Έμ μΌλ‘ 미리 λ‘λλμ΄ μμΌλ―λ‘ `/models` λͺ λ Ήμ μ€ννμ¬ μνλ κ²μ μ ννμμμ€. | |
| ```txt | |
| /models | |
| ``` | |
| OpenCode ꡬμ±μ ν΅ν΄ λͺ¨λΈμ μΆκ°ν μλ μμ΅λλ€. | |
| ```json title="opencode.json" {6} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "zenmux": { | |
| "models": { | |
| "somecoolnewmodel": {} | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| ## μ¬μ©μ μ μ 곡κΈμ | |
| `/connect` λͺ λ Ήμ λμ΄λμ§ μμ **OpenAI νΈν** 곡κΈμλ₯Ό μΆκ°νλ €λ©΄: | |
| :::tip | |
| OpenCodeμμ λͺ¨λ OpenAI νΈν 곡κΈμλ₯Ό μ¬μ©ν μ μμ΅λλ€. λλΆλΆμ μ΅μ AI 곡κΈμλ OpenAI νΈν APIλ₯Ό μ 곡ν©λλ€. | |
| ::: | |
| 1. `/connect` λͺ λ Ήμ μ€ννκ³ **Other**λ‘ μ€ν¬λ‘€νμμμ€. | |
| ```bash | |
| $ /connect | |
| β Add credential | |
| β | |
| β Select provider | |
| β ... | |
| β β Other | |
| β | |
| ``` | |
| 2. 곡κΈμλ₯Ό μν κ³ μ ν IDλ₯Ό μ λ ₯νμμμ€. | |
| ```bash | |
| $ /connect | |
| β Add credential | |
| β | |
| β Enter provider id | |
| β myprovider | |
| β | |
| ``` | |
| :::note | |
| κΈ°μ΅νκΈ° μ¬μ΄ IDλ₯Ό μ ννμμμ€. κ΅¬μ± νμΌμμ μ΄ IDλ₯Ό μ¬μ©νκ² λ©λλ€. | |
| ::: | |
| 3. 곡κΈμμ API ν€λ₯Ό μ λ ₯νμμμ€. | |
| ```bash | |
| $ /connect | |
| β Add credential | |
| β | |
| β² This only stores a credential for myprovider - you will need to configure it in opencode.json, check the docs for examples. | |
| β | |
| β Enter your API key | |
| β sk-... | |
| β | |
| ``` | |
| 4. νλ‘μ νΈ λλ ν 리μ `opencode.json` νμΌμ λ§λ€κ±°λ μ λ°μ΄νΈνμμμ€. | |
| ```json title="opencode.json" ""myprovider"" {5-15} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "myprovider": { | |
| "npm": "@ai-sdk/openai-compatible", | |
| "name": "My AI ProviderDisplay Name", | |
| "options": { | |
| "baseURL": "https://api.myprovider.com/v1" | |
| }, | |
| "models": { | |
| "my-model-name": { | |
| "name": "My Model Display Name" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| κ΅¬μ± μ΅μ μ λ€μκ³Ό κ°μ΅λλ€: | |
| - **npm**: μ¬μ©ν AI SDK ν¨ν€μ§. OpenAI νΈν 곡κΈμμ κ²½μ° `@ai-sdk/openai-compatible` | |
| - **name**: UIμ νμλ μ΄λ¦ | |
| - **models**: μ¬μ© κ°λ₯ν λͺ¨λΈ | |
| - **options.baseURL**: API μλν¬μΈνΈ URL | |
| - **options.apiKey**: μΈμ¦μ μ¬μ©νμ§ μλ κ²½μ° μ νμ μΌλ‘ API ν€ μ€μ | |
| - **options.headers**: μ νμ μΌλ‘ μ¬μ©μ μ μ ν€λ μ€μ | |
| κ³ κΈ μ΅μ μ λν μμΈν λ΄μ©μ μλ μμ λ₯Ό μ°Έμ‘°νμμμ€. | |
| 5. `/models` λͺ λ Ήμ μ€ννλ©΄ μ¬μ©μ μ μ 곡κΈμμ λͺ¨λΈμ΄ μ ν λͺ©λ‘μ λνλ©λλ€. | |
| ##### μμ | |
| λ€μμ `apiKey`, `headers` λ° λͺ¨λΈ `limit` μ΅μ μ μ€μ νλ μμ λλ€. | |
| ```json title="opencode.json" {9,11,17-20} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "provider": { | |
| "myprovider": { | |
| "npm": "@ai-sdk/openai-compatible", | |
| "name": "My AI ProviderDisplay Name", | |
| "options": { | |
| "baseURL": "https://api.myprovider.com/v1", | |
| "apiKey": "{env:ANTHROPIC_API_KEY}", | |
| "headers": { | |
| "Authorization": "Bearer custom-token" | |
| } | |
| }, | |
| "models": { | |
| "my-model-name": { | |
| "name": "My Model Display Name", | |
| "limit": { | |
| "context": 200000, | |
| "output": 65536 | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| κ΅¬μ± μΈλΆ μ¬ν: | |
| - **apiKey**: `env` λ³μ ꡬ문μ μ¬μ©νμ¬ μ€μ , [λ μμ보기](/docs/config#env-vars). | |
| - **headers**: κ° μμ²κ³Ό ν¨κ» μ μ‘λλ μ¬μ©μ μ μ ν€λ. | |
| - **limit.context**: λͺ¨λΈμ΄ νμ©νλ μ΅λ μ λ ₯ ν ν°. | |
| - **limit.output**: λͺ¨λΈμ΄ μμ±ν μ μλ μ΅λ μΆλ ₯ ν ν°. | |
| `limit` νλλ₯Ό μ¬μ©νλ©΄ OpenCodeκ° λ¨μ 컨ν μ€νΈ μμ νμ ν μ μμ΅λλ€. νμ€ κ³΅κΈμλ models.devμμ μλμΌλ‘ μ΄λ₯Ό κ°μ Έμ΅λλ€. | |
| ## λ¬Έμ ν΄κ²° | |
| 곡κΈμ ꡬμ±μ λ¬Έμ κ° μλ κ²½μ° λ€μμ νμΈνμμμ€. | |
| 1. **μΈμ¦ μ€μ νμΈ**: `opencode auth list`λ₯Ό μ€ννμ¬ κ³΅κΈμμ μ격 μ¦λͺ μ΄ κ΅¬μ±μ μΆκ°λμλμ§ νμΈνμμμ€. | |
| Amazon Bedrockκ³Ό κ°μ΄ μΈμ¦μ μν΄ νκ²½ λ³μμ μμ‘΄νλ 곡κΈμμλ μ μ©λμ§ μμ΅λλ€. | |
| 2. μ¬μ©μ μ μ 곡κΈμμ κ²½μ°, OpenCode ꡬμ±μ νμΈνκ³ λ€μμ μννμμμ€: | |
| - `/connect` λͺ λ Ήμ μ¬μ©λ 곡κΈμ IDκ° OpenCode ꡬμ±μ IDμ μΌμΉνλμ§ νμΈνμμμ€. | |
| - 곡κΈμμ μ¬λ°λ₯Έ npm ν¨ν€μ§κ° μ¬μ©λμλμ§ νμΈνμμμ€. μλ₯Ό λ€μ΄ Cerebrasμλ `@ai-sdk/cerebras`λ₯Ό μ¬μ©νκ³ , λ€λ₯Έ λͺ¨λ OpenAI νΈν 곡κΈμμλ `@ai-sdk/openai-compatible`μ μ¬μ©νμμμ€. | |
| - `options.baseURL` νλμ μ¬λ°λ₯Έ API μλν¬μΈνΈκ° μ¬μ©λμλμ§ νμΈνμμμ€. | |