생성자 LLM 선택하기(Choose generator llm)

생성자 LLM 선택하기(Choose generator llm)

테스트 데이터 생성 시 Ragas가 합성 데이터를 낼 때 사용하는 생성자 LLM(generator LLM)을 설정하는 가이드예요. OpenAI, AWS, Google Cloud, Azure와 그 외 제공자를 생성자 LLM으로 연결하는 방법을 단계별로 안내해요. 평가자 LLM 설정과 거의 같은 구조이지만 변수명이 generator_*로 다르다는 점만 기억하면 돼요.

출처: 문서

본문

OpenAI

langchain-openai 패키지를 설치해요.

pip install langchain-openai

그런 다음 OpenAI 키가 준비되어 환경에 있도록 해요.

import os
os.environ["OPENAI_API_KEY"] = "your-openai-key"

LLM을 LangchainLLMWrapper로 감싸 ragas에서 쓸 수 있게 해요.

from ragas.llms import LangchainLLMWrapper
from langchain_openai import ChatOpenAI
from ragas.embeddings import OpenAIEmbeddings
import openai

generator_llm = LangchainLLMWrapper(ChatOpenAI(model="gpt-4o"))
openai_client = openai.OpenAI()
generator_embeddings = OpenAIEmbeddings(client=openai_client)

AWS

langchain-aws 패키지를 설치해요.

pip install langchain-aws

그런 다음 AWS 자격 증명과 구성을 설정해야 해요.

config = {
    "credentials_profile_name": "your-profile-name",  # E.g "default"
    "region_name": "your-region-name",  # E.g. "us-east-1"
    "llm": "your-llm-model-id",  # E.g "anthropic.claude-3-5-sonnet-20241022-v2:0"
    "embeddings": "your-embedding-model-id",  # E.g "amazon.titan-embed-text-v2:0"
    "temperature": 0.4,
}

LLM을 정의하고 LangchainLLMWrapper로 감싸 ragas에서 쓸 수 있게 해요.

from langchain_aws import ChatBedrockConverse
from langchain_aws import BedrockEmbeddings
from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper

generator_llm = LangchainLLMWrapper(ChatBedrockConverse(
    credentials_profile_name=config["credentials_profile_name"],
    region_name=config["region_name"],
    base_url=f"https://bedrock-runtime.{config['region_name']}.amazonaws.com",
    model=config["llm"],
    temperature=config["temperature"],
))
generator_embeddings = LangchainEmbeddingsWrapper(BedrockEmbeddings(
    credentials_profile_name=config["credentials_profile_name"],
    region_name=config["region_name"],
    model_id=config["embeddings"],
))

다른 AWS 서비스를 사용하는 방법이 더 궁금하면 langchain-aws 문서를 참고하세요.

Google Cloud

Google은 모델에 접근하는 두 가지 방법을 제공해요: Google AI와 Google Cloud Vertex AI. Google AI는 Google 계정과 API 키만 있으면 되고, Vertex AI는 엔터프라이즈 기능이 있는 Google Cloud 계정이 필요해요.

먼저 필요한 패키지를 설치해요:

pip install langchain-google-genai langchain-google-vertexai

그런 다음 선택한 API에 맞춰 자격 증명을 설정해요: Google AI의 경우:

import os
os.environ["GOOGLE_API_KEY"] = "your-google-ai-key"  # From https://ai.google.dev/

Vertex AI의 경우:

# Ensure you have credentials configured (gcloud, workload identity, etc.)
# Or set service account JSON path:
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/service-account.json"

구성을 정의해요:

config = {
    "model": "gemini-1.5-pro",  # or other model IDs
    "temperature": 0.4,
    "max_tokens": None,
    "top_p": 0.8,
    # For Vertex AI only:
    "project": "your-project-id",  # Required for Vertex AI
    "location": "us-central1",     # Required for Vertex AI
}

LLM을 초기화하고 ragas에서 쓰도록 감싸요:

from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper

# Choose the appropriate import based on your API:
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_google_vertexai import ChatVertexAI

# Initialize with Google AI Studio
generator_llm = LangchainLLMWrapper(ChatGoogleGenerativeAI(
    model=config["model"],
    temperature=config["temperature"],
    max_tokens=config["max_tokens"],
    top_p=config["top_p"],
))

# Or initialize with Vertex AI
generator_llm = LangchainLLMWrapper(ChatVertexAI(
    model=config["model"],
    temperature=config["temperature"],
    max_tokens=config["max_tokens"],
    top_p=config["top_p"],
    project=config["project"],
    location=config["location"],
))

선택적으로 안전 설정(safety settings)을 구성할 수 있어요:

from langchain_google_genai import HarmCategory, HarmBlockThreshold

safety_settings = {
    HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE,
    # Add other safety settings as needed
}

# Apply to your LLM initialization
generator_llm = LangchainLLMWrapper(ChatGoogleGenerativeAI(
    model=config["model"],
    temperature=config["temperature"],
    safety_settings=safety_settings,
))

임베딩을 초기화하고 ragas에서 쓰도록 감싸요:

# Google AI Studio Embeddings
from langchain_google_genai import GoogleGenerativeAIEmbeddings

generator_embeddings = LangchainEmbeddingsWrapper(GoogleGenerativeAIEmbeddings(
    model="models/embedding-001",  # Google's text embedding model
    task_type="retrieval_document"  # Optional: specify the task type
))
# Vertex AI Embeddings
from langchain_google_vertexai import VertexAIEmbeddings

generator_embeddings = LangchainEmbeddingsWrapper(VertexAIEmbeddings(
    model_name="textembedding-gecko@001",  # or other available model
    project=config["project"],  # Your GCP project ID
    location=config["location"]  # Your GCP location
))

이용 가능한 모델, 기능, 구성에 대한 더 자세한 정보는 다음을 참고하세요: Google AI documentation

Azure

langchain-openai 패키지를 설치해요.

pip install langchain-openai

Azure OpenAI 키가 준비되어 환경에 있도록 해요.

import os
os.environ["AZURE_OPENAI_API_KEY"] = "your-azure-openai-key"

# other configuration
azure_config = {
    "base_url": "",  # your endpoint
    "model_deployment": "",  # your model deployment name
    "model_name": "",  # your model name
    "embedding_deployment": "",  # your embedding deployment name
    "embedding_name": "",  # your embedding name
}

LLM을 정의하고 LangchainLLMWrapper로 감싸 ragas에서 쓸 수 있게 해요.

from langchain_openai import AzureChatOpenAI
from langchain_openai import AzureOpenAIEmbeddings
from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper
generator_llm = LangchainLLMWrapper(AzureChatOpenAI(
    openai_api_version="2023-05-15",
    azure_endpoint=azure_configs["base_url"],
    azure_deployment=azure_configs["model_deployment"],
    model=azure_configs["model_name"],
    validate_base_url=False,
))

# init the embeddings for answer_relevancy, answer_correctness and answer_similarity
generator_embeddings = LangchainEmbeddingsWrapper(AzureOpenAIEmbeddings(
    openai_api_version="2023-05-15",
    azure_endpoint=azure_configs["base_url"],
    azure_deployment=azure_configs["embedding_deployment"],
    model=azure_configs["embedding_name"],
))

다른 Azure 서비스를 사용하는 방법이 더 궁금하면 langchain-azure 문서를 참고하세요.

기타 제공자(Others)

다른 LLM 제공자를 사용하고 있고 LangChain으로 상호작용한다면, LLM을 LangchainLLMWrapper로 감싸 ragas에서 쓸 수 있게 해요.

from ragas.llms import LangchainLLMWrapper
generator_llm = LangchainLLMWrapper(your_llm_instance)

더 상세한 가이드는 모델 커스터마이징 가이드를 확인하세요.

LlamaIndex를 사용한다면 LlamaIndexLLMWrapper로 LLM을 감싸 ragas에서 쓸 수 있어요.

from ragas.llms import LlamaIndexLLMWrapper
generator_llm = LlamaIndexLLMWrapper(your_llm_instance)

LlamaIndex 사용법에 대한 더 자세한 내용은 LlamaIndex 통합 가이드를 참고하세요.

아직도 좋아하는 LLM 제공자에서 Ragas를 쓸 수 없다면 이 issue에 코멘트로 알려주세요. 지원을 추가해 드릴게요 🙂.

더 알아보기 (Learn more)