모델 Provider (클라우드)
ADK-Rust는 adk-model crate를 통해 여러 클라우드 LLM provider를 지원합니다. 모든 provider는 Llm trait를 구현하므로, 여러분의 agents에서 상호 교환하여 사용할 수 있습니다.
개요
┌─────────────────────────────────────────────────────────────────────┐
│ Cloud Model Providers │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ • Gemini (Google) ⭐ Default - Multimodal, large context │
│ • OpenAI (GPT-4o) 🔥 Popular - Best ecosystem │
│ • Anthropic (Claude) 🧠 Smart - Best reasoning │
│ • DeepSeek 💭 Thinking - Chain-of-thought, cheap │
│ • Groq ⚡ Ultra-Fast - Fastest inference │
│ │
│ For local/offline models, see: │
│ • Ollama → ollama.md │
│ • mistral.rs → mistralrs.md │
│ │
└─────────────────────────────────────────────────────────────────────┘
빠른 비교
| Provider | 적합한 용도 | 속도 | 비용 | 주요 기능 |
|---|---|---|---|---|
| Gemini | 일반적인 사용 | ⚡⚡⚡ | 💰 | Multimodal, 대규모 컨텍스트 |
| OpenAI | 신뢰성 | ⚡⚡ | 💰💰 | 최고의 생태계 |
| Anthropic | 복잡한 추론 | ⚡⚡ | 💰💰 | 가장 안전하고 사려 깊음 |
| DeepSeek | Chain-of-thought | ⚡⚡ | 💰 | Thinking 모드, 저렴함 |
| Groq | 속도 중요 | ⚡⚡⚡⚡ | 💰 | 가장 빠른 추론 |
1단계: 설치
필요한 provider를 Cargo.toml에 추가하세요:
[dependencies]
# 하나 이상의 provider 선택:
adk-model = { version = "0.2", features = ["gemini"] } # Google Gemini (기본값)
adk-model = { version = "0.2", features = ["openai"] } # OpenAI GPT-4o
adk-model = { version = "0.2", features = ["anthropic"] } # Anthropic Claude
adk-model = { version = "0.2", features = ["deepseek"] } # DeepSeek
adk-model = { version = "0.2", features = ["groq"] } # Groq (초고속)
# 또는 모든 클라우드 provider 한 번에:
adk-model = { version = "0.2", features = ["all-providers"] }
2단계: API 키 설정
export GOOGLE_API_KEY="your-key" # Gemini
export OPENAI_API_KEY="your-key" # OpenAI
export ANTHROPIC_API_KEY="your-key" # Anthropic
export DEEPSEEK_API_KEY="your-key" # DeepSeek
export GROQ_API_KEY="your-key" # Groq
Gemini (Google) ⭐ 기본
가장 적합한 용도: 범용, 멀티모달 작업, 대규모 문서
주요 특징:
- 🖼️ 네이티브 멀티모달 (이미지, 비디오, 오디오, PDF)
- 📚 최대 2M 토큰 컨텍스트 창
- 💰 경쟁력 있는 가격
- ⚡ 빠른 추론
완전한 작동 예시
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("GOOGLE_API_KEY")?;
let model = GeminiModel::new(&api_key, "gemini-2.0-flash")?;
let agent = LlmAgentBuilder::new("gemini_assistant")
.description("Gemini-powered assistant")
.instruction("You are a helpful assistant powered by Google Gemini. Be concise.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
사용 가능한 모델
| Model | 설명 | Context |
|---|---|---|
gemini-2.0-flash | 빠르고 효율적 (권장) | 1M tokens |
gemini-2.5-flash | 최신 flash 모델 | 1M tokens |
gemini-2.5-pro | 가장 유능함 | 2M tokens |
예시 출력
👤 User: What's in this image? [uploads photo of a cat]
🤖 Gemini: I can see a fluffy orange tabby cat sitting on a windowsill.
The cat appears to be looking outside, with sunlight illuminating its fur.
It has green eyes and distinctive striped markings typical of tabby cats.
OpenAI (GPT-4o) 🔥 인기
가장 적합한 용도: 프로덕션 앱, 안정적인 성능, 광범위한 기능
주요 특징:
- 🏆 업계 표준
- 🔧 뛰어난 tool/function calling
- 📖 최고의 문서 및 에코시스템
- 🎯 일관되고 예측 가능한 출력
완전한 작동 예시
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("OPENAI_API_KEY")?;
let model = OpenAIClient::new(OpenAIConfig::new(&api_key, "gpt-4o"))?;
let agent = LlmAgentBuilder::new("openai_assistant")
.description("OpenAI-powered assistant")
.instruction("You are a helpful assistant powered by OpenAI GPT-4o. Be concise.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
사용 가능한 모델
| Model | 설명 | Context |
|---|---|---|
gpt-4o | 가장 유능하며 멀티모달 | 128K tokens |
gpt-4o-mini | 빠르고 비용 효율적 | 128K tokens |
gpt-4-turbo | 이전 플래그십 | 128K tokens |
o1 | 추론 모델 | 128K tokens |
예시 출력
👤 User: Write a haiku about Rust programming
🤖 GPT-4o: Memory so safe,
Ownership guards every byte—
Compiler, my friend.
Anthropic (Claude) 🧠 스마트
용도: 복잡한 추론, 안전에 민감한 앱, 긴 문서
주요 특징:
- 🧠 탁월한 추론 능력
- 🛡️ 가장 안전에 중점을 둠
- 📚 200K 토큰 컨텍스트
- ✍️ 뛰어난 작성 품질
완전한 작동 예시
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("ANTHROPIC_API_KEY")?;
let model = AnthropicClient::new(AnthropicConfig::new(&api_key, "claude-sonnet-4-20250514"))?;
let agent = LlmAgentBuilder::new("anthropic_assistant")
.description("Anthropic-powered assistant")
.instruction("You are a helpful assistant powered by Anthropic Claude. Be concise and thoughtful.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
사용 가능한 모델
| Model | 설명 | Context |
|---|---|---|
claude-sonnet-4-20250514 | 최신 Claude 4 Sonnet | 200K tokens |
claude-opus-4-20250514 | 가장 강력한 Claude 4 | 200K tokens |
claude-3-5-sonnet-20241022 | Claude 3.5 Sonnet | 200K tokens |
예시 출력
👤 User: 10살 아이에게 양자 얽힘을 설명해 줘
🤖 Claude: 마법 동전 두 개가 있다고 상상해 봐. 동전을 던지면, 하나는 지구에 있고 다른 하나는 달에 있더라도, 항상 똑같은 면으로 떨어져 - 둘 다 앞면이거나 둘 다 뒷면이지! 과학자들은 이것을 "얽힘(entanglement)"이라고 불러. 이 동전들은 우리가 볼 수 없는 특별한 방식으로 연결되어 있어, 마치 항상 동시에 같은 선택을 하는 보이지 않는 가장 친한 친구들처럼 말이야.
DeepSeek 💭 사고
용도: 복잡한 문제 해결, 수학, 코딩, 추론 작업
주요 특징:
- 💭 사고 모드 - 사고 과정을 보여줌
- 💰 매우 비용 효율적 (GPT-4보다 10배 저렴)
- 🔄 반복되는 접두사에 대한 컨텍스트 캐싱
- 🧮 수학 및 코딩에 강함
완전한 작동 예시
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("DEEPSEEK_API_KEY")?;
// Standard chat model
let model = DeepSeekClient::chat(&api_key)?;
// OR: Reasoning model with thinking mode
// let model = DeepSeekClient::reasoner(&api_key)?;
let agent = LlmAgentBuilder::new("deepseek_assistant")
.description("DeepSeek-powered assistant")
.instruction("You are a helpful assistant powered by DeepSeek. Be concise.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
사용 가능한 모델
| Model | 설명 | 특수 기능 |
|---|---|---|
deepseek-chat | 빠른 채팅 모델 | 범용 |
deepseek-reasoner | 추론 모델 | 사고 과정 표시 |
예시 출력 (사고 모드를 사용하는 Reasoner)
👤 User: 17 × 23은 얼마야?
🤖 DeepSeek: <thinking>
이것을 분해해 보겠습니다:
17 × 23 = 17 × (20 + 3)
= 17 × 20 + 17 × 3
= 340 + 51
= 391
</thinking>
정답은 391입니다.
Groq ⚡ 초고속
다음 용도에 가장 적합합니다: 실시간 애플리케이션, 챗봇, 속도가 중요한 작업
주요 특징:
- ⚡ 가장 빠른 추론 - 경쟁사보다 10배 빠름
- 🔧 LPU (Language Processing Unit) 기술
- 💰 경쟁력 있는 가격
- 🦙 LLaMA, Mixtral, Gemma 모델 실행
완전한 작동 예시
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
let api_key = std::env::var("GROQ_API_KEY")?;
let model = GroqClient::llama70b(&api_key)?;
let agent = LlmAgentBuilder::new("groq_assistant")
.description("Groq-powered assistant")
.instruction("You are a helpful assistant powered by Groq. Be concise and fast.")
.model(Arc::new(model))
.build()?;
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}
사용 가능한 모델
| 모델 | 메서드 | 설명 |
|---|---|---|
llama-3.3-70b-versatile | GroqClient::llama70b() | 가장 유능함 |
llama-3.1-8b-instant | GroqClient::llama8b() | 가장 빠름 |
mixtral-8x7b-32768 | Custom config | 좋은 균형 |
예시 출력
👤 User: Quick! Name 5 programming languages
🤖 Groq (in 0.2 seconds):
1. Rust
2. Python
3. JavaScript
4. Go
5. TypeScript
제공자 전환
모든 제공자는 동일한 Llm trait를 구현하므로 전환이 쉽습니다.
use adk_agent::LlmAgentBuilder;
use std::sync::Arc;
// 모델만 변경하면 나머지는 모두 동일하게 유지됩니다!
let model: Arc<dyn adk_core::Llm> = Arc::new(
// 하나를 선택하세요.
// GeminiModel::new(&api_key, "gemini-2.0-flash")?
// OpenAIClient::new(OpenAIConfig::new(&api_key, "gpt-4o"))?
// AnthropicClient::new(AnthropicConfig::new(&api_key, "claude-sonnet-4-20250514"))?
// DeepSeekClient::chat(&api_key)?
// GroqClient::llama70b(&api_key)?
);
let agent = LlmAgentBuilder::new("assistant")
.instruction("You are a helpful assistant.")
.model(model)
.build()?;
예시
# Gemini (기본값)
cargo run --example quickstart
# OpenAI
cargo run --example openai_basic --features openai
# Anthropic
cargo run --example anthropic_basic --features anthropic
# DeepSeek
cargo run --example deepseek_basic --features deepseek
cargo run --example deepseek_reasoner --features deepseek # 사고 모드
# Groq
cargo run --example groq_basic --features groq
관련 항목
- Ollama (로컬) - Ollama로 모델을 로컬에서 실행
- 로컬 모델 (mistral.rs) - 네이티브 Rust 추론
- LlmAgent - Agent와 함께 모델 사용
- Function Tools - Agent에 도구 추가
이전: ← 실시간 Agent | 다음: Ollama (로컬) →