← 블로그로 돌아가기
adk-rust 시작하기: Rust에서 첫 AI 에이전트 만들기
Rust로 AI 에이전트의 힘을 잠금 해제하세요. 이 가이드는 첫 번째 지능형 에이전트를 구축, 실행 및 배포하는 방법을 보여줍니다.
2023년 10월 26일•읽는 데 12분
adk-rustRustAI 에이전트Google Gemini개발튜토리얼
목차
- 1. adk-rust 소개
- 2. 사전 준비 및 설정
- 3. 첫 ADK 프로젝트 생성하기
- 4. adk-rust 에이전트의 구조
- 5. 간단한 AI 에이전트 구현하기
- 6. 에이전트 빌드 및 실행
- 7. 다음 단계
1. adk-rust 소개
에이전트 개발의 과제
복잡한 작업을 수행할 수 있는 지능형 에이전트를 구축하는 것은 오랫동안 많은 어려움이 따르는 영역이었습니다. 대규모 언어 모델(LLMs)을 조율하고, 상태를 관리하며, 다양한 입력을 처리하고, 이러한 에이전트를 효과적으로 배포하는 것은 종종 맞춤형 솔루션과 상당한 엔지니어링 노력을 필요로 합니다. 이러한 복잡성은 강력한 AI 기능을 애플리케이션에 통합하려는 개발자에게 큰 장애물이 될 수 있습니다.
adk-rust의 등장: AI 에이전트 개발 간소화
ADK(Agent Development Kit)는 AI 에이전트 개발을 기존 소프트웨어 개발처럼 느끼게 하는 것을 목표로 하며, `adk-rust`는 강력한 Rust 구현체입니다. 이는 정교한 AI 에이전트를 개발하고 배포하기 위해 설계된 유연하고 모듈식 프레임워크를 제공합니다. Gemini 및 Google 생태계에 최적화되어 있지만, `adk-rust`는 모델 및 배포에 구애받지 않아 다양한 플랫폼에서 호환성과 유연성을 보장합니다. 이 가이드는 환경 설정, 첫 번째 `adk-rust` 프로젝트 생성, 기본 AI 비서 배포 과정을 안내하여 에이전트 기반 프로젝트를 위한 견고한 기반을 제공할 것입니다.
2. 사전 준비 및 설정
에이전트 구축에 뛰어들기 전에 개발 환경이 준비되었는지 확인해 봅시다. 최신 Rust 툴체인과 프로젝트에 추가된
adk-rust 라이브러리가 필요합니다. adk-rust는 또한 Gemini와 같은 모델과 상호 작용하기 위해 Google API 키를 필요로 합니다.
먼저, Rust가 설치되어 있는지 확인하십시오. 설치되어 있지 않다면, 권장되는 방법은 rustup를 통하는 것입니다:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Rust 버전이 1.75 이상인지 확인하십시오:
rustc --version
다음으로, adk-rust를 종속성으로 추가할 것입니다. 또한 asynchronous 작업을 위해 tokio를, 그리고 API 키와 같은 환경 변수를 관리하기 위해 dotenv를 추가할 것입니다. 프로젝트를 생성한 후 (다음 단계에서 수행할 것입니다) cargo add를 사용하여 추가할 수 있습니다:
cargo add adk-rust
cargo add tokio --features full
cargo add dotenv
또는, 이러한 항목들을 Cargo.toml 파일에 수동으로 추가할 수 있습니다:
[dependencies]
adk-rust = "0.1"
tokio = { version = "1.40", features = ["full"] }
dotenv = "0.15"
마지막으로, Gemini를 위한 Google API 키가 필요합니다. Google AI Studio 또는 Google Cloud Console에서 이를 얻으십시오. 프로젝트의 루트 디렉토리에 .env 파일을 생성하고 키를 추가하십시오:
GOOGLE_API_KEY="YOUR_GEMINI_API_KEY_HERE"3. 첫 ADK 프로젝트 생성하기
환경 설정이 완료되었으니, 이제 우리의
adk-rust 에이전트의 컨테이너 역할을 할 새로운 Rust 프로젝트를 생성해 봅시다. 시작하기 위해 표준 cargo new 명령어를 사용할 것입니다.
터미널을 열고 다음을 실행하십시오:
cargo new my_first_adk_agent
cd my_first_adk_agent
이 명령어는 my_first_adk_agent라는 이름의 새로운 Rust 프로젝트를 초기화합니다. 생성된 프로젝트 구조는 Rust 개발자에게 익숙할 것입니다:
my_first_adk_agent/
├── Cargo.toml # Project manifest and dependencies
└── src/
└── main.rs # Your agent's main logic goes here
이제 이 my_first_adk_agent 디렉토리 내에서 이전 섹션의 cargo add 명령어를 실행할 수 있습니다. GOOGLE_API_KEY를 위해 루트 디렉토리(my_first_adk_agent/)에 .env 파일을 수동으로 생성하는 것을 잊지 마십시오.4. adk-rust 에이전트의 구조
adk-rust 에이전트는 일반적으로 LlmAgentBuilder를 중심으로 구축되며 Launcher를 사용하여 실행됩니다. 핵심 아이디어는 에이전트의 페르소나, 지침 및 사용해야 할 LLM를 정의하는 것입니다. adk-rust 에이전트의 src/main.rs 파일에서 찾을 수 있는 필수 구성 요소를 살펴보겠습니다.
adk-rust에서 LlmAgent는 설명, 지침(LLM에 대한 시스템 프롬프트 역할), 그리고 특정 언어 모델(Gemini와 같은)로 구성됩니다. 그런 다음 Launcher는 이 에이전트를 가져와 실행을 처리하며, 대화형 콘솔 또는 웹 서버 인터페이스를 제공합니다. 이 추상화는 에이전트가 외부 세계와 상호 작용하는 것을 단순화합니다.
아래는 adk-rust 에이전트의 완전한 'Hello World' 예시입니다. 이 코드를 src/main.rs 파일에 복사하십시오. 다음 섹션에서 각 부분을 자세히 분석할 것입니다.
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
// 1. Load environment variables from .env file
dotenv::dotenv().ok();
// 2. Get API key from environment
let api_key = std::env::var("GOOGLE_API_KEY")
.expect("GOOGLE_API_KEY environment variable not set");
// 3. Create the Gemini model
let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;
// 4. Build your agent
let agent = LlmAgentBuilder::new("my_assistant")
.description("A helpful AI assistant")
.instruction("You are a friendly and helpful assistant. Answer questions clearly and concisely.")
.model(Arc::new(model))
.build()?;
// 5. Run the agent with the CLI launcher
Launcher::new(Arc::new(agent)).run().await?;
Ok(())
}5. 간단한 AI 에이전트 구현하기
이제
adk-rust 에이전트의 'Hello World' 예시를 살펴보면서, 코드의 각 부분이 기능적인 AI 비서를 만드는 데 어떻게 기여하는지 집중해 봅시다. 이전 섹션의 코드를 src/main.rs 파일에 복사했어야 합니다.
1. **환경 변수 로딩**: dotenv::dotenv().ok();는 .env 파일에서 변수를 로드하여 GOOGLE_API_KEY를 Rust 애플리케이션 내에서 사용할 수 있도록 합니다.
2. **API 키 검색**: std::env::var("GOOGLE_API_KEY")는 환경에서 API 키를 가져옵니다. .expect() 호출은 키를 찾을 수 없는 경우 프로그램이 패닉하고 명확한 오류 메시지를 제공하도록 보장하여 모델 초기화 시 조용한 실패를 방지합니다.
3. **모델 초기화**: let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;는 GeminiModel를 인스턴스화합니다. 여기서는 API 키를 제공하고 원하는 Gemini 모델 버전(gemini-2.5-flash)을 지정합니다. 이 객체는 실제 LLM 서비스와의 연결 및 상호 작용 로직을 캡슐화하여 API 호출의 복잡성을 추상화합니다.
4. **에이전트 구성**: 여기서는 LlmAgentBuilder를 사용하여 에이전트의 핵심 정체성과 동작을 정의합니다:
* LlmAgentBuilder::new("my_assistant"): 에이전트 구축을 시작하고 고유 ID를 할당합니다.
* .description("A helpful AI assistant"): 에이전트의 목적에 대한 사람이 읽을 수 있는 설명을 제공하며, 문서화 또는 상위 수준 오케스트레이션에 유용합니다.
* .instruction("You are a friendly and helpful assistant. Answer questions clearly and concisely."): 이것은 시스템 프롬프트입니다. 기본 LLM가 어떻게 행동하고 응답하며 전반적인 페르소나를 가질지 안내합니다.
* .model(Arc::new(model)): 에이전트를 우리가 생성한 GeminiModel와 연결합니다. Arc (Atomic Reference Counted)는 스레드 안전한 참조 카운팅 포인터로, 여기서는 공유 소유권을 위해 사용되며, 이는 asynchronous Rust 애플리케이션에서 흔합니다.
* .build()?: 에이전트 구성을 완료합니다. Result를 반환하며, ?는 편리한 오류 전파를 위해 사용됩니다.
5. **에이전트 실행**: Launcher::new(Arc::new(agent)).run().await?;는 구성된 에이전트를 가져와 실행합니다. Launcher::run()의 기본 동작은 대화형 콘솔을 시작하여 에이전트에 프롬프트를 입력하고 응답을 볼 수 있도록 하는 것입니다. await 키워드는 이것이 LLM와 상호 작용하는 것과 같은 I/O 바운드 작업에 일반적인 asynchronous 작업임을 나타냅니다.6. 에이전트 빌드 및 실행
src/main.rs 파일에 에이전트 코드가 채워지고 Cargo.toml가 종속성으로 업데이트되면, 에이전트를 활성화할 준비가 된 것입니다! cargo가 이를 위한 주요 도구입니다.
먼저, Rust 코드를 실행 파일로 컴파일하기 위해 프로젝트를 빌드하십시오:
cargo build
이 명령어는 에이전트와 그 종속성을 컴파일합니다. 성공하면 target/debug/ 디렉토리(또는 --release로 빌드하는 경우 target/release/)에 실행 파일이 생성됩니다.
테스트 및 빠른 상호 작용에 탁월한 대화형 콘솔 모드에서 에이전트를 실행하려면 다음을 사용하십시오:
cargo run
터미널은 대화형 채팅 인터페이스가 되어 질문을 입력할 수 있으며, 에이전트는 구성된 Gemini 모델을 사용하여 응답할 것입니다. 종료하려면 일반적으로 exit를 입력하거나 Ctrl+C를 누르면 됩니다.
adk-rust는 또한 에이전트를 웹 서버로 실행하는 방법을 제공하여 HTTP 요청을 통해 상호 작용할 수 있도록 합니다. 이는 웹 애플리케이션 또는 다른 서비스에 에이전트를 통합하는 데 특히 유용합니다:
cargo run -- serve
기본적으로 서버는 http://127.0.0.1:8080에서 시작됩니다. 필요한 경우 다른 포트를 지정할 수 있습니다:
cargo run -- serve --port 3000
이제 에이전트는 웹 API를 통해 접근할 수 있습니다! curl와 같은 도구나 웹 브라우저를 사용하여 구성된 엔드포인트(예: http://127.0.0.1:8080/v1/agent)로 요청을 보낼 수 있습니다. 이를 통해 AI 에이전트는 배포 가능하고 호출 가능한 서비스가 됩니다.7. 다음 단계
축하합니다!
adk-rust를 사용하여 첫 AI 에이전트를 성공적으로 구축하고 실행했습니다. 이것은 프레임워크로 달성할 수 있는 것의 시작에 불과합니다. 다음으로 진행할 몇 가지 제안 사항은 다음과 같습니다:
* **ADK 문서 탐색**: 공식 adk-rust 문서를 더 깊이 탐색하여 다른 구성 요소와의 통합, 상태 관리 또는 더 복잡한 에이전트 워크플로우 생성과 같은 고급 기능을 이해하십시오.
* **사용자 정의 도구 및 기능**: 에이전트에 사용자 정의 도구를 장착하여 외부 APIs, 데이터베이스와 상호 작용하거나 텍스트 생성 이상의 특정 계산을 수행하는 방법을 배우십시오. 이는 에이전트 기능을 확장하는 강력한 기능입니다.
* **배포 옵션**: Docker를 사용한 컨테이너화, 클라우드 플랫폼 배포 또는 기존 Rust 서비스와의 통합 등 adk-rust 에이전트를 위한 다양한 배포 전략을 조사하십시오.
* **커뮤니티 참여**: adk-rust 커뮤니티에 참여하십시오. 프로젝트를 공유하고, 질문하고, 토론에 기여하는 것은 학습 및 문제 해결을 크게 가속화할 수 있습니다. 최신 개발 및 모범 사례와 연결 상태를 유지하십시오.