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_KEYenv 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)