EdenAIChatGenerator

EdenAIChatGenerator

Eden AI의 OpenAI 호환 API를 통해 500개 이상의 모델로 채팅 완성(chat completion)을 가능하게 해 주는 컴포넌트예요.

출처: 문서

본문

  • 파이프라인에서의 일반적인 위치: ChatPromptBuilder 뒤에 사용해요.
  • 필수 초기화 변수: api_key(Eden AI API 키. EDENAI_API_KEY 환경 변수로도 설정 가능)
  • 필수 실행 변수: messages(ChatMessage 객체 리스트)
  • 출력 변수: replies(ChatMessage 객체 리스트)

개요 (Overview)

EdenAIChatGenerator는 Haystack을 Eden AI에 연결해요. Eden AI는 통합된 OpenAI 호환 API로, 단일 API 키로 OpenAI, Anthropic, Mistral, Google, Cohere 등 여러 제공자의 500개 이상 모델에 접근할 수 있게 해주고, EU 데이터 보관(데이터 레지던시)을 지원해요.

EdenAIChatGenerator는 동작하려면 Eden AI API 키가 필요해요. 키는 다음 위치에 쓸 수 있어요.

  • Secret API를 사용한 api_key 초기화 파라미터
  • EDENAI_API_KEY 환경 변수(권장)

모델은 Eden AI의 provider/model 명명 규칙으로 선택해요. 예:

  • openai/gpt-4o-mini (기본값)
  • anthropic/claude-sonnet-4-5
  • mistral/mistral-large-latest
  • google/gemini-2.5-flash

사용 가능한 전체 모델 목록은 Eden AI 모델 카탈로그를 참고하세요.

이 컴포넌트는 동작하기 위해 ChatMessage 객체 리스트가 필요해요. ChatMessage는 메시지, 역할(메시지를 생성한 주체 — user, assistant, system, tool 등), 선택적 메타데이터를 담는 데이터 클래스예요.

API가 지원하는 파라미터에 대한 자세한 내용은 Eden AI 문서를 참고하세요. 컴포넌트 실행 시 generation_kwargs로 이 파라미터를 전달할 수 있어요.

도구 지원 (Tool Support)

EdenAIChatGenerator는 tools 파라미터를 통한 함수 호출(function calling)을 지원해요. 이 파라미터는 Tool 객체 리스트, 단일 Toolset, 또는 둘의 혼합을 받아요. 관련 도구를 논리적 그룹으로 묶으면서 필요할 때 독립 도구도 함께 포함할 수 있게 해주죠.

도구 사용에 대한 자세한 내용은 Tool 및 Toolset 문서를 참고하세요.

스트리밍 (Streaming)

이 Generator는 LLM에서 나오는 토큰을 출력으로 직접 스트리밍할 수 있어요. 그러려면 streaming_callback 초기화 파라미터에 함수를 전달하세요.

사용법 (Usage)

EdenAIChatGenerator를 사용하려면 edenai-haystack 패키지를 설치하세요.

pip install edenai-haystack

단독 사용 (On its own)

from haystack_integrations.components.generators.edenai import EdenAIChatGenerator
from haystack.components.generators.utils import print_streaming_chunk
from haystack.dataclasses import ChatMessage
from haystack.utils import Secret

generator = EdenAIChatGenerator(
    api_key=Secret.from_env_var("EDENAI_API_KEY"),
    model="mistral/mistral-large-latest",
    streaming_callback=print_streaming_chunk,
)
message = ChatMessage.from_user("What's Natural Language Processing? Be brief.")
print(generator.run([message]))

파이프라인에서 사용 (In a Pipeline)

URL의 내용을 기반으로 질문에 답하는 RAG 파이프라인 예시예요. ChatPromptBuilder에서 URL의 내용을 messages에 추가하고, EdenAIChatGenerator로 답변을 생성해요.

from haystack import Pipeline
from haystack.components.builders import ChatPromptBuilder
from haystack.components.fetchers import LinkContentFetcher
from haystack.components.converters import HTMLToDocument
from haystack.dataclasses import ChatMessage

from haystack_integrations.components.generators.edenai import EdenAIChatGenerator

fetcher = LinkContentFetcher()
converter = HTMLToDocument()
prompt_builder = ChatPromptBuilder(variables=["documents"])
llm = EdenAIChatGenerator(model="mistral/mistral-large-latest")

message_template = """Answer the following question based on the contents of the article: {{query}}\n\n
               Article: {{documents[0].content}} \n
           """
messages = [ChatMessage.from_user(message_template)]

rag_pipeline = Pipeline()
rag_pipeline.add_component(name="fetcher", instance=fetcher)
rag_pipeline.add_component(name="converter", instance=converter)
rag_pipeline.add_component("prompt_builder", prompt_builder)
rag_pipeline.add_component("llm", llm)

rag_pipeline.connect("fetcher.streams", "converter.sources")
rag_pipeline.connect("converter.documents", "prompt_builder.documents")
rag_pipeline.connect("prompt_builder.prompt", "llm.messages")

question = "What is Eden AI?"

result = rag_pipeline.run(
    {
        "fetcher": {"urls": ["https://www.edenai.co/"]},
        "prompt_builder": {
            "template_variables": {"query": question},
            "template": messages,
        },
    },
)

print(result["llm"]["replies"][0].text)

더 알아보기 (Learn more)