
Haystack 集成 Amazon SageMaker使用 SagemakerGenerator 调用 SageMaker Inference Endpoint 完成 LLM 文本生成【免费下载链接】haystackOpen-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.项目地址: https://gitcode.com/GitHub_Trending/ha/haystackAmazon SageMaker 是 AWS 托管的机器学习平台可将大语言模型LLM部署为托管式 Inference Endpoint。Haystack 通过独立的集成包amazon-sagemaker-haystack提供SagemakerGenerator组件让开发者可以在 Haystack Pipeline 中直接调用部署在 SageMaker 上的模型完成文本生成。本文以 docs-website/reference_versioned_docs/version-2.18/integrations-api/amazon_sagemaker.md 与当前仓库中 SagemakerGenerator 使用文档 为主体系统讲解该组件的初始化参数、run()调用方式、串行化机制以及在实际 RAG Pipeline 中的集成方法帮助你快速在 Haystack 应用中接入 AWS SageMaker 托管的 LLM。SagemakerGenerator 是什么SagemakerGenerator是 Haystack 生态中负责文本生成的 Generator 组件其核心能力是调用部署在 SageMaker Inference Endpoint 上的大语言模型完成文本生成。从文档定位看它在 Pipeline 中最常见的位置是PromptBuilder之后——即由 PromptBuilder 依据模板组装好 prompt再交给SagemakerGenerator调用 SageMaker 端点获得模型回复。组件的基本信息如下项目说明组件名称SagemakerGenerator导入路径haystack_integrations.components.generators.amazon_sagemaker所属集成包amazon-sagemaker-haystackPipeline 中常见位置PromptBuilder之后必备初始化参数modelSageMaker Model Endpoint 名称AWS 凭据可通过环境变量提供必备 run 参数prompt传给 LLM 的字符串提示词输出变量repliesLLM 生成的回复字符串列表meta每个回复关联的元数据字典列表如 token 数、finish reason 等API 参考docs-website/reference/integrations-api/amazon_sagemaker.md在 生成器总览文档 中SagemakerGenerator被归类为Enables text generation using LLMs deployed on Amazon Sagemaker即专门面向 AWS 托管推理场景的生成器。如果你的模型托管在 SageMaker 而非 OpenAI、Hugging Face 等平台它是把生成能力接入 Haystack Pipeline 的标准途径。说明SagemakerGenerator属于haystack-core-integrations生态其源码不在此仓库内当前仓库只包含 API 参考文档与使用指南以下参数与行为说明均以 API 参考文档 和 使用指南 为准。前置条件部署模型并配置 AWS 凭据使用SagemakerGenerator前需要完成两件事在 SageMaker 上部署一个模型端点以及配置好 AWS 凭据。部署模型到 SageMakerSagemakerGenerator支持托管在 SageMaker Inference Endpoint 上的大语言模型。官方文档建议参考 SageMaker JumpStart foundation models documentation 完成模型部署。SageMaker JumpStart 提供大量预训练基础模型的即用部署方式例如本文示例中使用的 Falcon 7Bjumpstart-dft-hf-llm-falcon-7b-bf16或jumpstart-dft-hf-llm-falcon-7b-instruct-bf16与 Llama-2 系列。配置 AWS 凭据组件需要 AWS 凭据才能与 SageMaker 服务建立会话。你可以通过两种标准方式提供环境变量SagemakerGenerator初始化时默认从以下环境变量读取凭据strictFalse表示环境变量缺失时不会抛错会继续尝试其他凭据来源AWS_ACCESS_KEY_ID→aws_access_key_idAWS_SECRET_ACCESS_KEY→aws_secret_access_keyAWS_SESSION_TOKEN→aws_session_tokenAWS_DEFAULT_REGION→aws_region_nameAWS_PROFILE→aws_profile_name共享凭据文件shared credentials fileAWS CLI 常规的~/.aws/credentials与~/.aws/config配置。提示当前仓库中的 RAG 示例sagemakergenerator.mdx注释强调Make sure your AWS credentials are set up correctly. You can use environment variables or a shared credentials file确保 AWS 凭据配置正确可以使用环境变量或共享凭据文件与 API 参考文档的说明一致。初始化参数详解SagemakerGenerator的构造函数签名如下来自 API 参考文档__init__( model: str, aws_access_key_id: Secret | None Secret.from_env_var( [AWS_ACCESS_KEY_ID], strictFalse ), aws_secret_access_key: Secret | None Secret.from_env_var( [AWS_SECRET_ACCESS_KEY], strictFalse ), aws_session_token: Secret | None Secret.from_env_var( [AWS_SESSION_TOKEN], strictFalse ), aws_region_name: Secret | None Secret.from_env_var( [AWS_DEFAULT_REGION], strictFalse ), aws_profile_name: Secret | None Secret.from_env_var( [AWS_PROFILE], strictFalse ), aws_custom_attributes: dict[str, Any] | None None, generation_kwargs: dict[str, Any] | None None, ) - None各参数含义与要点参数类型默认值说明modelstr必填SageMaker Model Endpoint 名称。注意传入的是端点名而非模型名例如jumpstart-dft-hf-llm-falcon-7b-bf16。aws_access_key_idSecret \| None环境变量AWS_ACCESS_KEY_IDAWS 访问密钥 ID。aws_secret_access_keySecret \| None环境变量AWS_SECRET_ACCESS_KEYAWS 秘密访问密钥。aws_session_tokenSecret \| None环境变量AWS_SESSION_TOKENAWS 会话令牌使用临时凭据时需要。aws_region_nameSecret \| None环境变量AWS_DEFAULT_REGIONAWS 区域名未提供时使用默认区域。aws_profile_nameSecret \| None环境变量AWS_PROFILEAWS 配置文件名未提供时使用默认 profile。aws_custom_attributesdict[str, Any] \| NoneNone传递给 SageMaker 的自定义属性字典。例如 Llama-2 系列模型需要传{accept_eula: True}。generation_kwargsdict[str, Any] \| NoneNone文本生成所需的额外关键字参数具体支持的参数以你的模型文档为准。关于 Secret 类型的凭据封装注意所有 AWS 凭据参数的类型都是Secret | None且默认通过Secret.from_env_var([...], strictFalse)从环境变量解析。这是 Haystack 组件规范化的凭据处理方式Secret封装敏感信息避免在代码或序列化文件中明文暴露strictFalse表示对应环境变量未设置时不会立即报错而是回退到 boto3 默认的凭据链如共享凭据文件、IAM 角色等。因此你可以在初始化时不显式传入任何凭据参数只要运行环境环境变量或~/.aws/credentials配置正确即可。model 参数传入的是 Endpoint 名称文档特别强调model参数是The name for SageMaker Model EndpointSageMaker 模型端点的名称。也就是说你传入的必须是部署完成后生成的端点名endpoint name例如jumpstart-dft-hf-llm-falcon-7b-instruct-bf16。这与直接调用模型 ID 的本地推理组件有本质区别SagemakerGenerator不加载模型权重而是通过 HTTP 调用托管端点进行远程推理。aws_custom_attributes处理需要特殊请求属性的模型某些 SageMaker 模型在推理时需要携带自定义请求属性。一个典型例子是Llama-2 模型族其推理必须显式接受 EULA终端用户许可协议因此需要在初始化时传入generator SagemakerGenerator( modeljumpstart-dft-meta-textgenerationneuron-llama-2-7b, aws_custom_attributes{accept_eula: True}, )generation_kwargs模型相关的生成参数generation_kwargs用于传递模型特定的文本生成参数。由于不同模型的推理负载inference payload格式不同具体支持哪些参数需要查阅你所部署模型的技术文档。以 Hugging Face 模型为例可参考 Hugging Face 官方博客中关于 SageMaker 托管 LLM 推理负载参数的说明。文档特别以Llama-2 模型为例列出了其支持的推理负载参数参数类型约束说明max_new_tokens正整数模型生成文本直到输出长度不含输入上下文长度达到该值。temperature正浮点数控制输出随机性。温度越高输出越倾向低概率词temperature0时退化为贪心解码greedy decoding。top_p0 到 1 之间的浮点数每一步生成时从累积概率达到top_p的最小词集合中采样核采样。return_full_text布尔值为True时输入文本会包含在输出文本中。默认值为False。例如初始化时传入生成参数generator SagemakerGenerator( modeljumpstart-dft-meta-textgenerationneuron-llama-2-7b, aws_custom_attributes{accept_eula: True}, generation_kwargs{ max_new_tokens: 200, temperature: 0.7, top_p: 0.9, return_full_text: False, }, )run()调用推理端点run()是触发文本生成推理的入口方法run( prompt: str, generation_kwargs: dict[str, Any] | None None ) - dict[str, list[str] | list[dict[str, Any]]]参数promptstr用于文本生成的字符串提示词必填。generation_kwargsdict[str, Any] | None额外的文本生成关键字参数。合并规则这些参数与初始化时传入的generation_kwargs按 key 合并——run()中提供的 key 优先级更高会覆盖初始化值而只在初始化时设置过的 key 会被保留。也就是说你可以在初始化时设置一组全局默认生成参数再在每次调用时按需覆盖或追加无需重复构造组件。返回值返回一个字典包含两个 keyreplieslist[str]模型生成的回复字符串列表。通常列表中只有一个元素即模型对本次 prompt 的回复。metalist[dict[str, Any]]每个回复关联的元数据字典列表例如 token 使用量、finish reason 等具体字段取决于端点返回内容。异常run()可能抛出以下异常异常触发场景ValueError模型响应类型既不是字典列表也不是单个字典时。SagemakerNotReadyErrorSageMaker 模型尚未就绪、无法接受请求时例如端点仍在创建或扩容中。SagemakerInferenceErrorSageMaker 推理过程返回错误时。基础使用示例安装集成包SagemakerGenerator属于独立集成包需要先安装pip install amazon-sagemaker-haystack独立使用配置好 AWS 凭据环境变量或共享凭据文件后最小可用示例from haystack_integrations.components.generators.amazon_sagemaker import ( SagemakerGenerator, ) generator SagemakerGenerator(modeljumpstart-dft-hf-llm-falcon-7b-bf16) response generator.run(Whats Natural Language Processing? Be brief.) print(response)API 参考文档 给出的输出示例为 {replies: [Natural Language Processing (NLP) is a branch of artificial intelligence that focuses on the interaction between computers and human language. It involves enabling computers to understand, interpret, and respond to natural human language in a way that is both meaningful and useful.], meta: [{}]}使用指南 中则使用 instruct 变体端点并展示了类似输出。可以看到replies中保存模型生成的完整回答meta中保存每条回复的元数据示例中为空字典。你也可以在调用时覆盖生成参数response generator.run( Summarize the key ideas of this article., generation_kwargs{max_new_tokens: 150, temperature: 0.3}, )在 RAG Pipeline 中集成SagemakerGenerator的典型用法是作为 RAG检索增强生成管线的生成环节检索器召回相关文档PromptBuilder把文档与问题组装成模板化 prompt最后由SagemakerGenerator调用 SageMaker 端点生成答案。使用指南 给出了完整的 RAG 示例from haystack_integrations.components.generators.amazon_sagemaker import ( SagemakerGenerator, ) from haystack import Pipeline from haystack.components.retrievers.in_memory import InMemoryBM25Retriever from haystack.components.builders import PromptBuilder template Given the following information, answer the question. Context: {% for document in documents %} {{ document.content }} {% endfor %} Question: Whats the official language of {{ country }}? pipe Pipeline() pipe.add_component(retriever, InMemoryBM25Retriever(document_storedocstore)) pipe.add_component(prompt_builder, PromptBuilder(templatetemplate)) pipe.add_component( llm, SagemakerGenerator(modeljumpstart-dft-hf-llm-falcon-7b-instruct-bf16), ) pipe.connect(retriever, prompt_builder.documents) pipe.connect(prompt_builder, llm) pipe.run({prompt_builder: {country: France}})这段代码演示了三条关键集成要点组件即插即用SagemakerGenerator与 Haystack 的其他标准组件InMemoryBM25Retriever、PromptBuilder一样通过pipe.add_component()注册通过pipe.connect()连接。接线方式检索器输出documents接入prompt_builder.documentsprompt_builder的输出接入llm。PromptBuilder 的 Jinja 模板渲染出完整 prompt 后作为SagemakerGenerator.run()的输入。运行参数pipe.run()只需传入模板所需变量示例中为countryPipeline 会自动完成文档检索、prompt 组装与模型调用。把示例中的docstore换成你自己写入文档的InMemoryDocumentStore将model换成你实际部署的 SageMaker 端点名即可得到一个可运行的、基于 AWS 托管 LLM 的 RAG 应用。序列化与反序列化作为 Haystack 组件SagemakerGenerator支持通过字典完成序列化与反序列化便于 Pipeline 的保存、加载与配置管理。to_dict()to_dict() - dict[str, Any]将组件序列化为字典。返回值为包含序列化数据的字典。序列化时会保留model、aws_custom_attributes、generation_kwargs等配置而 AWS 凭据等Secret类型字段会以引用环境变量的形式序列化而不是明文写入从而避免敏感信息泄露。from_dict()from_dict(data: dict[str, Any]) - SagemakerGenerator从字典反序列化出SagemakerGenerator实例。参数datadict[str, Any]要反序列化的字典。返回值SagemakerGenerator反序列化后的组件实例。配合 Haystack 的 YAML/JSON 序列化机制你可以把包含SagemakerGenerator的完整 Pipeline 保存为配置文件在部署时通过Pipeline.loads()等 API 恢复实现 Pipeline 即代码Pipeline-as-Code。补充说明与限制远程托管推理SagemakerGenerator不做本地模型加载所有推理均发生在 AWS SageMaker 端点因此使用前必须确保端点已成功部署并处于 InService 状态否则run()会抛出SagemakerNotReadyError。端点名即model初始化时传入的model参数是 SageMaker 端点名endpoint name务必与 AWS 控制台中的端点名称一致。凭据优先级显式传入的Secret参数优先于环境变量环境变量优先于共享凭据文件最终遵循 boto3 标准凭据链解析。生成参数因模型而异generation_kwargs支持的 key 由模型决定。文档明确列出的max_new_tokens、temperature、top_p、return_full_text是 Llama-2 家族及多数 Hugging Face LLM 部署的通用负载参数其他模型请查阅对应推理负载文档。可选组件在 生成器总览 的对比表中SagemakerGenerator标注为非默认包含的集成组件使用前需通过pip install amazon-sagemaker-haystack单独安装。相关资源API 参考文档v2.18docs-website/reference_versioned_docs/version-2.18/integrations-api/amazon_sagemaker.md组件使用指南docs-website/docs/pipeline-components/generators/sagemakergenerator.mdx生成器对比与选型docs-website/docs/pipeline-components/generators.mdx 及 选择合适 Generator 的指南前置依赖PromptBuilder组件文档位于 docs-website/docs/pipeline-components/builders/promptbuilder.mdx【免费下载链接】haystackOpen-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.项目地址: https://gitcode.com/GitHub_Trending/ha/haystack创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考