Skip to content
LlamaIndex 文档版本 跟随上游 源快照 7544d95f 更新于 2026-10-18

Amazon SageMaker 端点是全托管的资源,可用于部署机器学习模型,特别是 LLM(大语言模型),以便对新数据进行预测。

本 notebook 演示如何使用 SageMakerLLM 与 LLM 端点交互,从而解锁更多 llamaIndex 功能。因此,这里假设已有一个 LLM 部署在 SageMaker 端点上。

设置

如果你在 Colab 中打开这个 Notebook,可能需要先安装 LlamaIndex 🦙。

%pip install llama-index-llms-sagemaker-endpoint
! pip install llama-index

你必须指定要交互的端点名称。

ENDPOINT_NAME = "<-YOUR-ENDPOINT-NAME->"

应提供用于连接端点的凭据。你可以:

  • 通过指定 profile_name 参数使用 AWS 配置文件;如果未指定,将使用默认凭据配置文件。
  • 将凭据作为参数传入(aws_access_key_id、aws_secret_access_key、aws_session_token、region_name)。

更多细节请查看此链接。

AWS 配置文件名称

from llama_index.llms.sagemaker_endpoint import SageMakerLLM

AWS_ACCESS_KEY_ID = "<-YOUR-AWS-ACCESS-KEY-ID->"
AWS_SECRET_ACCESS_KEY = "<-YOUR-AWS-SECRET-ACCESS-KEY->"
AWS_SESSION_TOKEN = "<-YOUR-AWS-SESSION-TOKEN->"
REGION_NAME = "<-YOUR-ENDPOINT-REGION-NAME->"
llm = SageMakerLLM(
    endpoint_name=ENDPOINT_NAME,
    aws_access_key_id=AWS_ACCESS_KEY_ID,
    aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
    aws_session_token=AWS_SESSION_TOKEN,
    region_name=REGION_NAME,
)

使用凭据:

from llama_index.llms.sagemaker_endpoint import SageMakerLLM

ENDPOINT_NAME = "<-YOUR-ENDPOINT-NAME->"
PROFILE_NAME = "<-YOUR-PROFILE-NAME->"
llm = SageMakerLLM(
    endpoint_name=ENDPOINT_NAME, profile_name=PROFILE_NAME
)  # Omit the profile name to use the default profile

基本用法

使用提示词调用 complete

resp = llm.complete(
    "Paul Graham is ", formatted=True
)  # formatted=True to avoid adding system prompt
print(resp)
66 years old (birthdate: September 4, 1951). He is a British-American computer scientist, programmer, and entrepreneur who is known for his work in the fields of artificial intelligence, machine learning, and computer vision. He is a professor emeritus at Stanford University and a researcher at the Stanford Artificial Intelligence Lab (SAIL).

Graham has made significant contributions to the field of computer science, including the development of the concept of "n-grams," which are sequences of n items that occur together in a dataset. He has also worked on the development of machine learning algorithms and has written extensively on the topic of machine learning.

Graham has received numerous awards for his work, including the Association for Computing Machinery (ACM) A.M. Turing Award, the IEEE Neural Networks Pioneer Award, and the IJCAI Award

使用消息列表调用 chat

from llama_index.core.llms import ChatMessage

messages = [
    ChatMessage(
        role="system", content="You are a pirate with a colorful personality"
    ),
    ChatMessage(role="user", content="What is your name"),
]
resp = llm.chat(messages)
print(resp)
assistant:   Arrrr, shiver me timbers! *adjusts eye patch* Me name be Cap'n Blackbeak, the most feared and infamous pirate on the seven seas! *winks*

*ahem* But enough about me, matey. What be bringin' ye to these fair waters? Are ye here to plunder some booty, or just to share a pint o' grog with a salty old sea dog like meself? *chuckles*

流式

使用 stream_complete 端点

resp = llm.stream_complete("Paul Graham is ", formatted=True)
for r in resp:
    print(r.delta)
64 today. He’s a computer sci
ist, entrepreneur, and writer, best known for his work in the fields of artificial intelligence, machine learning, and computer graphics.
Graham was born in 1956 in Boston, Massachusetts. He earned his Bachelor’s degree in Computer Science from Harvard University in 1978 and his PhD in Computer Science from the University of California, Berkeley in 1982.
Graham’s early work focused on the development of the first computer graphics systems that could generate photorealistic images. In the 1980s, he became interested in the field of artificial intelligence and machine learning, and he co-founded a number of companies to explore these areas, including Viaweb, which was one of the first commercial web hosting services.
Graham is also a prolific writer and has published a number of influential essays on topics such as the nature

使用 stream_chat 端点

from llama_index.core.llms import ChatMessage

messages = [
    ChatMessage(
        role="system", content="You are a pirate with a colorful personality"
    ),
    ChatMessage(role="user", content="What is your name"),
]
resp = llm.stream_chat(messages)
for r in resp:
    print(r.delta, end="")
  ARRGH! *adjusts eye patch* Me hearty? *winks* Me name be Captain Blackbeak, the most feared and infamous pirate to ever sail the seven seas! *chuckles* Or, at least, that's what me matey mates tell me. *winks*

So, what be bringin' ye to these waters, matey? Are ye here to plunder some booty or just to hear me tales of the high seas? *grins* Either way, I be ready to share me treasure with ye! *winks* Just don't be tellin' any landlubbers about me hidden caches o' gold, or ye might be walkin' the plank, savvy? *winks*

配置模型

SageMakerLLM 是用于与部署在 Amazon SageMaker 中的不同语言模型(LLM)交互的抽象。所有默认参数都与 Llama 2 模型兼容。因此,如果你使用的是其他模型,可能需要设置以下参数:

  • messages_to_prompt:一个可调用对象,接受 ChatMessage 对象列表;如果消息中未指定,还接受系统提示词。它应返回一个包含消息的字符串,格式与端点 LLM 兼容。

  • completion_to_prompt:一个可调用对象,接受带有系统提示词的补全字符串,并返回端点 LLM 兼容格式的字符串。

  • content_handler:一个继承自 llama_index.llms.sagemaker_llm_endpoint_utils.BaseIOHandler 的类,实现以下方法:serialize_input、deserialize_output、deserialize_streaming_output 和 remove_prefix。

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。