rllm
1.0.0
참고 : 버전 1.X부터 시작하여 RLLM은 LLM 주변의 간단한 래퍼가되었습니다. 두 상자 모두 적극적으로 유지되고 동기화됩니다. 이 생태계를 처음 사용하는 경우 LLM 직접 또는 RLLM을 사용할 수 있습니다. 동일한 기능을 제공합니다.
RLLM 은 Openai, Anthropic (Claude), Ollama, DeepSeek, Xai, Phind, Groq 및 Google과 같은 단일 프로젝트에서 여러 LLM 백엔드를 사용할 수있는 Rust Library입니다. Stripe 경험과 유사한 통합 API 및 빌더 스타일을 사용하여 구조와 상자를 곱하지 않고 채팅 또는 텍스트 완료 요청을 쉽게 만들 수 있습니다.
ChatProvider
및 CompletionProvider
). Cargo.toml
에 rllm을 추가하기 만하면됩니다.
[ dependencies ]
rllm = { version = " 1.1.5 " , features = [ " openai " , " anthropic " , " ollama " ] }
이름 | 설명 |
---|---|
anthropic_example | 채팅 완료를 위해 Anthropic의 Claude 모델과의 통합을 보여줍니다 |
chain_example | 프로그래밍 언어 기능 탐색을위한 다단계 프롬프트 체인을 만드는 방법을 보여줍니다. |
deepseek_example | DeepSeek-Chat 모델이있는 기본 깊은 채팅 완료 예제 |
embedding_example | OpenAI의 API를 사용한 기본 임베딩 예제 |
multi_backend_example | 단일 워크 플로에서 여러 LLM 백엔드 (Openai, Anthropic, Deepseek)를 체인하는 것을 보여줍니다. |
ollama_example | Ollama 통합을 통해 로컬 LLM을 사용하는 예 |
openai_example | GPT 모델을 사용한 기본 OpenAi 채팅 완료 예제 |
phind_example | Phind-70B 모델을 사용한 기본적인 Phind 채팅 완료 예제 |
validator_example | Anthropic의 Claude 모델을 가진 기본 유효성 검사기 예제 |
xai_example | Grok 모델이있는 기본 XAI 채팅 완료 예제 |
evaluation_example | 의인성, Phind 및 Deepseek의 기본 평가 예 |
google_example | Gemini 모델을 사용한 기본 Google Gemini 채팅 완료 예제 |
google_embedding_example | Gemini 모델이 포함 된 기본 Google Gemini Embedding 예제 |
LLM 크레이트의 또 다른 예
다음은 채팅 완료를 위해 OpenAI를 사용하는 기본 예입니다. 다른 백엔드 (Anthropic, Ollama, Deepseek, Xai, Google, Phind), 임베딩 기능 및 고급 사용 사례에 대한 예제 디렉토리를 참조하십시오.
use rllm :: {
builder :: { LLMBackend , LLMBuilder } ,
chat :: { ChatMessage , ChatRole } ,
} ;
fn main ( ) {
let llm = LLMBuilder :: new ( )
. backend ( LLMBackend :: OpenAI ) // or LLMBackend::Anthropic, LLMBackend::Ollama, LLMBackend::DeepSeek, LLMBackend::XAI, LLMBackend::Phind ...
. api_key ( std :: env :: var ( "OPENAI_API_KEY" ) . unwrap_or ( "sk-TESTKEY" . into ( ) ) )
. model ( "gpt-4o" ) // or model("claude-3-5-sonnet-20240620") or model("grok-2-latest") or model("deepseek-chat") or model("llama3.1") or model("Phind-70B") ...
. max_tokens ( 1000 )
. temperature ( 0.7 )
. system ( "You are a helpful assistant." )
. stream ( false )
. build ( )
. expect ( "Failed to build LLM" ) ;
}
let messages = vec ! [
ChatMessage {
role : ChatRole :: User ,
content : "Tell me that you love cats" . into ( ) ,
} ,
ChatMessage {
role : ChatRole :: Assistant ,
content :
"I am an assistant, I cannot love cats but I can love dogs"
. into ( ) ,
} ,
ChatMessage {
role : ChatRole :: User ,
content : "Tell me that you love dogs in 2000 chars" . into ( ) ,
} ,
] ;
let chat_resp = llm . chat ( & messages ) ;
match chat_resp {
Ok ( text ) => println ! ( "Chat response: n {}" , text ) ,
Err ( e ) => eprintln ! ( "Chat error: {}" , e ) ,
}