본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 27. 05:30

graniet/llm

요약

Rust 기반의 라이브러리로, OpenAI, Anthropic, Google 등 다양한 LLM 백엔드를 하나의 통합 API로 관리할 수 있게 해줍니다. 빌더 패턴과 다단계 체인 기능을 통해 복잡한 AI 워크플로우를 효율적으로 구현할 수 있습니다.

핵심 포인트

  • 다양한 LLM 백엔드를 지원하는 통합 API 제공
  • Rust의 트레이트와 빌더 패턴을 활용한 높은 확장성
  • 다단계 체인 및 병렬 평가 기능 지원
  • 함수 호출, 구조화된 출력, 음성 변환 등 풍부한 기능
  • OpenAI 표준 형식을 따르는 REST API 제공

참고: 이 crate 이름은 이전에 다른 프로젝트의 소유였습니다. 현재 구현은 새롭고 다른 라이브러리를 나타냅니다. 이전 crate은 현재 아카이브되었으며 더 이상 업데이트를 받지 않습니다.ref: https://github.com/rustformers/llm

LLM은 하나의 프로젝트에서 **다중 LLM 백엔드 (multiple LLM backends)**를 사용할 수 있게 해주는 Rust 라이브러리입니다: OpenAI, Anthropic (Claude), Ollama, DeepSeek, xAI, Phind, Groq, Google, Cohere, Mistral, Hugging Face 및 ElevenLabs.
Stripe의 경험과 유사한 통합 API (unified API) 및 **빌더 스타일 (builder style)**을 통해, 구조체와 crate을 늘리지 않고도 채팅 (chat), 텍스트 완성 (completion), 음성-텍스트 변환 (speak-to-text) 요청을 쉽게 생성할 수 있습니다.

멀티 백엔드 (Multi-backend): 단일 진입점을 통해 OpenAI, Anthropic, Ollama, DeepSeek, xAI, Phind, Groq, OpenRouter, Cohere, Elevenlabs 및 Google을 관리합니다.
다단계 체인 (Multi-step chains): 각 단계마다 서로 다른 백엔드를 사용하는 다단계 체인을 생성합니다.
템플릿 (Templates): 변수를 사용하여 복잡한 프롬프트 (prompts)를 생성하는 데 템플릿을 사용합니다.
빌더 패턴 (Builder pattern): 몇 번의 간단한 호출로 LLM (모델, temperature, max_tokens, 타임아웃...)을 구성합니다.
채팅 및 완성 (Chat & Completions): 두 가지 통합 트레이트 (traits) (ChatProviderCompletionProvider)

)를 통해 대부분의 유스케이스 (use cases)를 지원합니다.

확장성 (Extensible): 새로운 백엔드 (backends)를 쉽게 추가할 수 있습니다.
Rust 친화적 (Rust-friendly): 명확한 트레이트 (traits), 통합된 에러 핸들링 (error handling), 그리고 features를 통한 조건부 컴파일 (conditional compilation)을 고려하여 설계되었습니다.
검증 (Validation): 요청에 검증을 추가하여 출력이 예상한 대로인지 확인합니다.
회복 탄력성 (Resilience (retry/backoff)): 지수 백오프 (exponential backoff) 및 지터 (jitter)를 사용하여 회복 탄력성 있는 호출을 활성화합니다.
평가 (Evaluation): 요청에 평가를 추가하여 LLM의 출력을 점수화합니다.
병렬 평가 (Parallel Evaluation): 여러 LLM 제공업체를 병렬로 평가하고 점수 함수 (scoring functions)를 기반으로 최적의 응답을 선택합니다.
함수 호출 (Function calling): 요청에 함수 호출을 추가하여 LLM에서 도구 (tools)를 사용합니다.
REST API: OpenAI 표준 형식을 사용하여 모든 LLM 백엔드를 REST API로 제공합니다.
비전 (Vision): 요청에 비전을 추가하여 LLM에서 이미지를 사용합니다.
추론 (Reasoning): 요청에 추론을 추가하여 LLM에서 추론을 사용합니다.
구조화된 출력 (Structured Output): 제공된 JSON 스키마 (JSON schema)를 기반으로 특정 LLM 제공업체로부터 구조화된 출력을 요청합니다.
음성-텍스트 변환 (Speech to text): 오디오를 텍스트로 전사 (transcribe)합니다.
텍스트-음성 변환 (Text to speech): 텍스트를 오디오로 변환합니다.
메모리 (Memory): 슬라이딩 윈도우 (sliding window, 곧 다른 방식 추가 예정) 및 공유 메모리 (shared memory) 지원을 통해 대화 기록을 저장하고 검색합니다.
에이전트 기능 (Agentic): 구성 가능한 트리거 (triggers), 역할 (roles) 및 검증을 통해 공유 메모리로 협력할 수 있는 반응형 에이전트 (reactive agents)를 구축합니다.

단순히 Cargo.tomlLLM을 추가하세요:

[dependencies]
llm = { version = "1.3.8", features = ["openai", "anthropic", "ollama", "deepseek", "xai", "phind", "google", "groq", "mistral", "elevenlabs"] }

LLM에는 다양한 LLM 모델과 쉽게 상호작용할 수 있는 명령줄 도구 (command-line tool)가 포함되어 있습니다. 다음 명령어로 설치할 수 있습니다: cargo install llm

  • llm을 사용하여 대화형 채팅 세션을 시작합니다.
  • llm openai:gpt-4o를 사용하여 특정 제공업체:모델 (provider:model)과 대화형 채팅 세션을 시작합니다.
  • llm set OPENAI_API_KEY your_key를 사용하여 API 키를 설정합니다.
  • llm default openai:gpt-4를 사용하여 기본 제공업체를 설정합니다.
  • echo "Hello World" | llm을 사용합니다.

파이프(pipe)를 사용하려면: llm --provider openai --model gpt-4 --temperature 0.7을 사용합니다.

고급 옵션:

  • 표준 메시지(standard messages) 형식을 사용합니다.
  • 여러 LLM 백엔드(backends)를 함께 연결하기 위해 스텝 체인(step chains)을 사용합니다.
  • OpenAI 표준 형식을 갖춘 REST API를 통해 체인을 노출합니다.
[dependencies]
llm = { version = "1.3.8", features = ["openai", "anthropic", "ollama", "deepseek", "xai", "phind", "google", "groq", "api", "mistral", "elevenlabs"] }

자세한 내용은 api_example을 참조하세요.

이름설명
anthropic_example채팅 완성(chat completion)을 위해 Anthropic의 Claude 모델과 통합하는 방법을 보여줍니다
anthropic_streaming_example실시간 토큰 생성을 보여주는 Anthropic 스트리밍(streaming) 채팅 예제
chain_example프로그래밍 언어의 기능을 탐색하기 위한 다단계 프롬프트 체인(prompt chains)을 생성하는 방법을 보여줍니다
deepseek_exampledeepseek-chat 모델을 사용한 기본적인 DeepSeek 채팅 완성 예제
embedding_exampleOpenAI API를 사용한 기본적인 임베딩(embedding) 예제
multi_backend_example단일 워크플로우(workflow)에서 여러 LLM 백엔드(OpenAI, Anthropic, DeepSeek)를 함께 연결하는 방법을 설명합니다
ollama_exampleOllama 통합을 통해 로컬 LLM을 사용하는 예제
openai_exampleGPT 모델을 사용한 기본적인 OpenAI 채팅 완성 예제
resilient_example간단한 재시도/백오프(retry/backoff) 래퍼(wrapper) 사용법
openai_streaming_example실시간 토큰 생성을 보여주는 OpenAI 스트리밍(streaming) 채팅 예제
phind_examplePhind-70B 모델을 사용한 기본적인 Phind 채팅 완성 예제
validator_exampleAnthropic의 Claude 모델을 사용한 기본적인 검증기(validator) 예제
xai_exampleGrok 모델을 사용한 기본적인 xAI 채팅 완성 예제
xai_streaming_example실시간 토큰 생성을 보여주는 X.AI 스트리밍(streaming) 채팅 예제
evaluation_exampleAnthropic, Phind 및 DeepSeek을 사용한 기본적인 평가(evaluation) 예제
evaluator_parallel_example여러 LLM 제공업체를 병렬로 평가합니다
google_exampleGemini 모델을 사용한 기본적인 Google Gemini 채팅 완성 예제

google_streaming_example |
실시간 토큰 생성 (token generation)을 보여주는 Google 스트리밍 채팅 (streaming chat) 예제 |
google_pdf |
PDF 첨부를 포함한 Google Gemini 채팅 |
google_image |
PDF 첨부를 포함한 Google Gemini 채팅 |
google_embedding_example |
Gemini 모델을 사용한 기본적인 Google Gemini 임베딩 (embedding) 예제 |
tool_calling_example |
OpenAI를 사용한 기본적인 도구 호출 (tool calling) 예제 |
google_tool_calling_example |
회의 일정 예약을 위한 복잡한 JSON 스키마 (JSON schema)를 사용한 Google Gemini 함수 호출 (function calling) 예제 |
json_schema_nested_example |
객체 배열 (arrays of objects) 및 복잡한 데이터 구조를 포함한 깊게 중첩된 JSON 스키마 (JSON schemas)를 보여주는 고급 예제 |
tool_json_schema_cycle_example |
JSON 스키마 검증 (validation) 및 구조화된 응답 (structured responses)을 포함한 완전한 도구 호출 (tool calling) 사이클 |
unified_tool_calling_example |
선택 가능한 제공자(provider)를 통한 통합 도구 호출 (unified tool calling) - 멀티턴 도구 사용 (multi-turn tool use) 및 도구 선택 (tool choice) 시연 |
deepclaude_pipeline_example |
DeepSeek 및 Claude를 사용한 기본적인 deepclaude 파이프라인 (pipeline) 예제 |
api_example |
OpenAI, Anthropic, DeepSeek 및 Groq를 사용한 기본적인 API (OpenAI 표준 형식) 예제 |
api_deepclaude_example |
DeepSeek 및 Claude를 사용한 기본적인 API (OpenAI 표준 형식) 예제 |
anthropic_vision_example |
Anthropic을 사용한 기본적인 Anthropic 비전 (vision) 예제 |
openai_vision_example |
OpenAI를 사용한 기본적인 OpenAI 비전 (vision) 예제 |
openai_reasoning_example |
OpenAI를 사용한 기본적인 OpenAI 추론 (reasoning) 예제 |
anthropic_thinking_example |
Anthropic 추론 (reasoning) 예제 |
elevenlabs_stt_example |
ElevenLabs를 사용한 음성-텍스트 변환 (Speech-to-text) 전사 (transcription) 예제 |
elevenlabs_tts_example |
ElevenLabs를 사용한 텍스트-음성 변환 (Text-to-speech) 예제 |
openai_stt_example |
OpenAI를 사용한 음성-텍스트 변환 (Speech-to-text) 전사 (transcription) 예제 |
openai_tts_example |
OpenAI를 사용한 텍스트-음성 변환 (Text-to-speech) 예제 |
tts_rodio_example |
OpenAI를 사용한 rodio 기반 텍스트-음성 변환 (Text-to-speech) 예제 |
chain_audio_text_example |
음성-텍스트 변환 (speech-to-text)과 텍스트 처리 (text processing)를 결합한 다단계 체인 (multi-step chain) 시연 예제 |
xai_search_chain_tts_example |

XAI 검색, OpenAI 요약, 그리고 Rodio 재생을 통한 ElevenLabs 텍스트 음성 변환 (text-to-speech)을 결합한 다단계 체인 (multi-step chain) 시연 예제 |
xai_search_example |
검색 모드, 날짜 범위 및 소스 필터링을 포함한 X.AI 검색 기능 시연 예제 |
memory_example |
자동 메모리 통합 - LLM이 호출 간의 대화 문맥 (context)을 기억함 |
memory_share_example |
여러 LLM 제공자 간의 공유 메모리 시연 예제 |
trim_strategy_example |
자동 요약을 통한 메모리 트리밍 (trimming) 전략 시연 예제 |
agent_builder_example |
공유 메모리를 통해 협력하는 반응형 에이전트 (reactive agents) 예제, 역할 및 조건이 부여된 LLM 에이전트 생성 시연 |
openai_web_search_example |
위치 기반 검색 문맥 (search context)을 포함한 OpenAI 웹 검색 기능 시연 예제 |
model_listing_example |
LLM 백엔드 (backend)로부터 사용 가능한 모델 목록을 나열하는 방법 시연 예제 |
cohere_example |
Command 모델을 사용한 기본적인 Cohere 채팅 완성 (chat completion) 예제 |
mistral_example |
Mistral 모델을 사용한 기본적인 Mistral 예제 |
huggingface_example |
Hugging Face 모델을 사용한 기본적인 예제 |

다음은 채팅 완성 (chat completion)을 위해 OpenAI를 사용하는 기본적인 예제입니다. 다른 백엔드 (Anthropic, Ollama, DeepSeek, xAI, Google, Phind, Elevenlabs), 임베딩 (embedding) 기능 및 더 고급 사용 사례는 examples 디렉토리를 참조하세요.

use llm::{
builder::{LLMBackend, LLMBuilder}, // 빌더 패턴 (Builder pattern) 구성 요소
chat::ChatMessage, // 채팅 관련 구조체
...

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0