HetznerChatGenerator

HetznerChatGenerator

Hetzner Inference API에 호스팅된 모델을 사용해 채팅 완성을 가능하게 하는 구성 요소예요.

출처: 문서

본문

HetznerChatGenerator는 Hetzner의 유럽 데이터 센터에서 운영되는 Hetzner Inference API가 제공하는 오픈 웨이트 모델을 지원해요. 현재 두 모델이 제공되며, 둘 다 262,144 토큰 컨텍스트 창을 갖고 이미지와 텍스트를 함께 받아들여요:

  • Qwen/Qwen3.6-35B-A3B-FP8(기본값)
  • Qwen3.8-27B

Parameters ​

HetznerChatGenerator를 사용하려면 HETZNER_API_KEY를 환경 변수로 설정해야 해요. 또는 api_key를 설정하고 Haystack의 secret 관리로 다른 환경 변수나 토큰으로 API 키를 제공할 수 있어요. model 파라미터로 원하는 모델을 설정하세요. 선택적으로 기본 api_base_url(기본 "https://inference.hetzner.com/api/v1")을 변경할 수 있어요.

generation_kwargs 파라미터로 Hetzner 채팅 완성 API에 유효한 텍스트 생성 파라미터를 init 또는 run 메서드에 직접 전달할 수 있어요. API는 OpenAI 호환이므로 OpenAIChatGenerator와 같은 파라미터가 적용돼요.

컴포넌트는 실행에 ChatMessage 객체 리스트가 필요해요. ChatMessage는 메시지, 역할(누가 메시지를 생성했는지, 예: user, assistant, system, tool), 선택적 메타데이터를 담은 데이터 클래스예요. 자세한 내용은 ChatMessage 문서에서 확인하세요. 모델이 tool을 호출하게 하려면 tools 파라미터에 Tool 객체, Toolset, 또는 둘의 혼합을 전달하세요.

Streaming ​

출력을 생성되는 대로 스트리밍할 수 있어요. streaming_callback에 콜백을 전달하세요. 내장 print_streaming_chunk를 사용해 텍스트 토큰과 tool 이벤트(tool 호출 및 tool 결과)를 출력해요.

from haystack.components.generators.utils import print_streaming_chunk
from haystack.dataclasses import ChatMessage
from haystack_integrations.components.generators.hetzner import HetznerChatGenerator

client = HetznerChatGenerator(streaming_callback=print_streaming_chunk)
client.run([ChatMessage.from_user("What are Agentic Pipelines? Be brief.")])
  • 대표적인 파이프라인 위치: ChatPromptBuilder 뒤
  • 필수 init 변수: api_key — Hetzner API 토큰. HETZNER_API_KEY env var로 설정 가능.
  • 필수 run 변수: messages — ChatMessage 객체 리스트
  • 출력 변수: replies — ChatMessage 객체 리스트
  • API reference: Hetzner
  • 패키지명: hetzner-haystack

Usage ​

pip install hetzner-haystack

On its own ​

from haystack.dataclasses import ChatMessage
from haystack_integrations.components.generators.hetzner import HetznerChatGenerator

client = HetznerChatGenerator()
response = client.run([ChatMessage.from_user("What are Agentic Pipelines? Be brief.")])
print(response["replies"][0].text)

멀티모달 입력:

from haystack.dataclasses import ChatMessage, ImageContent
from haystack_integrations.components.generators.hetzner import HetznerChatGenerator

image = ImageContent.from_url(
    "https://cdn.hetzner.de/cdn/public/Uploads/Finnland_Luftaufnahme-v2.jpg"
)
client = HetznerChatGenerator()
response = client.run(
    [
        ChatMessage.from_user(
            content_parts=["Describe this image in one sentence.", image]
        )
    ]
)
print(response["replies"][0].text)

In a pipeline ​

from haystack import Pipeline
from haystack.components.builders import ChatPromptBuilder
from haystack.dataclasses import ChatMessage
from haystack_integrations.components.generators.hetzner import HetznerChatGenerator

prompt_builder = ChatPromptBuilder()
llm = HetznerChatGenerator()
pipe = Pipeline()
pipe.add_component("builder", prompt_builder)
pipe.add_component("llm", llm)
pipe.connect("builder.prompt", "llm.messages")
messages = [
    ChatMessage.from_system("Give brief answers."),
    ChatMessage.from_user("Tell me about {{city}}"),
]
response = pipe.run(
    data={
        "builder": {"template": messages, "template_variables": {"city": "Nuremberg"}}
    },
)
print(response["llm"]["replies"][0].text)