Messages
Message는 LangChain에서 모델의 컨텍스트를 구성하는 기본 단위입니다. LLM과 상호작용할 때 대화의 상태를 나타내는 데 필요한 콘텐츠와 메타데이터를 모두 포함하여 모델의 입력과 출력을 나타냅니다.
Message는 다음을 포함하는 객체입니다:
- Role: 메시지 유형을 식별합니다 (예:
system,user,human,ai,assistant,tool) - Content: 메시지의 실제 콘텐츠를 나타냅니다 (텍스트, 이미지, 오디오, 문서 등)
- Metadata: 응답 정보, 메시지 ID, 토큰 사용량과 같은 선택적 필드
LangChain은 모든 모델 제공자에서 작동하는 표준 메시지 타입을 제공하여 호출되는 모델에 관계없이 일관된 동작을 보장합니다.
설정
from dotenv import load_dotenv
load_dotenv("../.env", override=True)True
기본 사용법
메시지를 사용하는 가장 간단한 방법은 메시지 객체를 생성하고 호출할 때 모델에 전달하는 것입니다.
from langchain.chat_models import init_chat_model
from langchain.messages import AIMessage, HumanMessage, SystemMessage, ToolMessage
model = init_chat_model("openai:gpt-4.1-nano", temperature=0.0, max_tokens=100)
system_msg = SystemMessage("당신은 유용한 어시스턴트입니다.")
human_msg = HumanMessage("안녕하세요, 잘 지내셨나요?")
messages = [system_msg, human_msg]
response = model.invoke(messages) # AIMessage 반환
response.pretty_print()==================================[1m Ai Message [0m==================================
안녕하세요! 네, 잘 지내고 있습니다. 당신은 어떻게 지내셨나요? 어떤 도움을 드릴까요?
텍스트 프롬프트
텍스트 프롬프트는 문자열로, 대화 기록을 유지할 필요가 없는 간단한 생성 작업에 이상적입니다.
response = model.invoke("봄에 관한 하이쿠를 써주세요")
response.pretty_print()==================================[1m Ai Message [0m==================================
봄바람에
꽃잎 흩날리며
새소리 울려
텍스트 프롬프트를 사용하는 경우:
- 단일의 독립적인 요청이 있을 때
- 대화 기록이 필요하지 않을 때
- 코드 복잡성을 최소화하고 싶을 때
메시지 프롬프트
또는 메시지 객체 목록을 제공하여 모델에 메시지 목록을 전달할 수 있습니다.
messages = [
SystemMessage("당신은 시 전문가입니다"),
HumanMessage("봄에 관한 하이쿠를 써 보세요"),
AIMessage("벚꽃이 피어나네..."),
]
response = model.invoke(messages)
response.pretty_print()==================================[1m Ai Message [0m==================================
봄바람 속
꽃잎 흩날리며
새 소리 울려
메시지 프롬프트를 사용하는 경우:
- 다중 턴 대화를 관리할 때
- 멀티모달 콘텐츠(이미지, 오디오, 파일)로 작업할 때
- 시스템 지침을 포함할 때
딕셔너리 형식
OpenAI 채팅 완성 형식으로 직접 메시지를 지정할 수도 있습니다.
messages = [
{"role": "system", "content": "당신은 시 전문가입니다"},
{"role": "user", "content": "봄에 관한 하이쿠를 써주세요"},
{"role": "assistant", "content": "벚꽃이 피네요..."},
]
response = model.invoke(messages)
response.pretty_print()==================================[1m Ai Message [0m==================================
봄바람 속
꽃잎 흩날리며
새 소리 울려
메시지 타입
- System message: 모델의 동작 방식을 지시하고 상호작용에 대한 컨텍스트를 제공합니다
- Human message: 사용자 입력 및 모델과의 상호작용을 나타냅니다
- AI message: 텍스트 콘텐츠, 도구 호출, 메타데이터를 포함하여 모델이 생성한 응답입니다
- Tool message: 도구 호출의 출력을 나타냅니다
System Message
SystemMessage는 모델의 동작을 설정하는 초기 지침 세트를 나타냅니다. 시스템 메시지를 사용하여 톤을 설정하고, 모델의 역할을 정의하며, 응답에 대한 가이드라인을 수립할 수 있습니다.
messages = [
SystemMessage("당신은 유용한 코딩 보조 도구입니다."),
HumanMessage("REST API를 어떻게 생성하나요?"),
]
response = model.invoke(messages)
response.pretty_print()==================================[1m Ai Message [0m==================================
REST API를 생성하는 방법은 사용하는 프로그래밍 언어나 프레임워크에 따라 다르지만, 일반적인 절차는 다음과 같습니다. 여기서는 Python과 Flask를 예시로 설명하겠습니다.
1. 환경 설정
- Python 설치
- 가상 환경 생성 및 활성화
- 필요한 라이브러리 설치 (예: Flask)
```bash
# 가상 환경 생성
python -m venv venv
# 가상 환경 활성화 (Windows
system_msg = SystemMessage("""
웹 프레임워크에 전문성을 갖춘 시니어 파이썬 개발자입니다.
항상 코드 예시를 제공하고 그 근거를 설명하십시오.
설명은 간결하면서도 철저히 하십시오.
""")
messages = [system_msg, HumanMessage("REST API를 어떻게 생성하나요?")]
response = model.invoke(messages)
response.pretty_print()==================================[1m Ai Message [0m==================================
REST API를 생성하는 방법은 여러 가지가 있지만, 가장 일반적이고 효율적인 방법은 Python의 웹 프레임워크인 **Flask** 또는 **FastAPI**를 사용하는 것입니다. 여기서는 **FastAPI**를 예로 들어 설명하겠습니다. FastAPI는 빠른 개발과 높은 성능, 자동 문서화 기능을 제공하여 REST API 개발에 적합합니다.
---
### 1. FastAPI 설치
```bash
pip install fastapi uv
Human Message
HumanMessage는 사용자 입력과 상호작용을 나타냅니다. 텍스트, 이미지, 오디오, 파일 및 기타 멀티모달 콘텐츠(content)를 포함할 수 있습니다.
텍스트 콘텐츠
response = model.invoke([HumanMessage("머신 러닝이란 무엇인가?")])
response.pretty_print()==================================[1m Ai Message [0m==================================
머신 러닝(Machine Learning)은 인공지능(AI)의 한 분야로, 컴퓨터가 명시적인 프로그래밍 없이 데이터를 통해 스스로 학습하고, 경험을 바탕으로 성능을 향상시키는 기술입니다. 즉, 머신 러닝은 데이터를 분석하여 패턴이나 규칙을 찾아내고, 이를 바탕으로 새로운 데이터에 대해 예측하거나 의사결정을 수행할 수 있도록 하는 알고리즘과 방법론을 의미합니다.
메시지 메타데이터
human_msg = HumanMessage(
content="안녕하세요!",
name="alice", # 선택사항: 다른 사용자 식별
id="msg_123", # 선택사항: 추적을 위한 고유 식별자
)
assistant_msg = model.invoke([human_msg])
human_msg.pretty_print()
assistant_msg.pretty_print()================================[1m Human Message [0m=================================
Name: alice
안녕하세요!
==================================[1m Ai Message [0m==================================
안녕하세요! 어떻게 도와드릴까요?
ℹ️
name필드의 동작은 제공자에 따라 다릅니다. 일부는 사용자 식별에 사용하고 다른 일부는 무시합니다. 확인하려면 모델 제공자의 참조 문서를 참조하세요.
AI Message
AIMessage는 모델 호출의 출력을 나타냅니다. 멀티모달 데이터, 도구 호출 및 나중에 액세스할 수 있는 제공자별 메타데이터를 포함할 수 있습니다.
속성
text(string): 메시지의 텍스트 콘텐츠입니다.content(string | dict[]): 메시지의 원본 콘텐츠입니다.content_blocks(ContentBlock[]): 메시지의 표준화된 콘텐츠 블록입니다.tool_calls(dict[] | None): 모델이 수행한 도구 호출입니다. 도구가 호출되지 않으면 비어 있습니다.id(string): 메시지의 고유 식별자입니다 (LangChain에서 자동으로 생성되거나 제공자 응답에서 반환됨)usage_metadata(dict | None): 사용 가능한 경우 토큰 수를 포함할 수 있는 메시지의 사용 메타데이터입니다.response_metadata(ResponseMetadata | None): 메시지의 응답 메타데이터입니다.
response = model.invoke("Explain AI")
print(type(response)) # <class 'langchain_core.messages.AIMessage'><class 'langchain_core.messages.ai.AIMessage'>
AIMessage 객체는 모델을 호출할 때 반환되며, 응답에서 연결된 모든 메타데이터를 포함합니다.
Provider는 메시지 타입에 따라 다르게 가중치를 부여하고 컨텍스트화하므로, 때로는 새로운 AIMessage 객체를 생성하여 마치 모델에서 나온 것처럼 메시지 기록에 삽입하는 것이 유용합니다.
# AI 메시지를 수동으로 생성 (예: 대화 기록용)
ai_msg = AIMessage("그 질문을 기꺼이 도와드리겠습니다!")
# 대화 기록에 추가
messages = [
SystemMessage("당신은 도움이 되는 어시스턴트입니다"),
HumanMessage("도와주실 수 있나요?"),
ai_msg, # 모델에서 나온 것처럼 삽입
HumanMessage("좋습니다! 2+2는 뭘까요?"),
]
response = model.invoke(messages)도구 호출
모델이 도구 호출을 수행하면 AIMessage에 포함됩니다.
from langchain.chat_models import init_chat_model
model = init_chat_model("openai:gpt-4.1-nano")
def get_weather(location: str) -> str:
"""위치의 날씨를 가져옵니다."""
return "맑음"
model_with_tools = model.bind_tools([get_weather])
response = model_with_tools.invoke("파리의 날씨는 어떻게 되나요?")
for tool_call in response.tool_calls:
print(f"도구: {tool_call['name']}")
print(f"인자: {tool_call['args']}")
print(f"ID: {tool_call['id']}")도구: get_weather
인자: {'location': '파리'}
ID: call_iM2MHZMMTUQ7rPGbIYm6lghQ
추론이나 인용과 같은 다른 구조화된 데이터도 메시지 콘텐츠(content)에 나타날 수 있습니다.
토큰 사용량
AIMessage는 usage_metadata 필드에 토큰 수 및 기타 사용 메타데이터를 보유할 수 있습니다:
model = init_chat_model("openai:gpt-5-nano")
response = model.invoke("Hello!")
response.usage_metadata{'input_tokens': 8,
'output_tokens': 312,
'total_tokens': 320,
'input_token_details': {'audio': 0, 'cache_read': 0},
'output_token_details': {'audio': 0, 'reasoning': 256}}
자세한 내용은 UsageMetadata를 참조하세요.
스트리밍 및 청크
스트리밍 중에는 전체 메시지로 결합할 수 있는 AIMessageChunk 객체를 받게 됩니다.
chunks = []
full_message = None
for chunk in model.stream("안녕"):
chunks.append(chunk)
print(chunk.text, end="|", flush=True)
full_message = chunk if full_message is None else full_message + chunk|안|녕하세요|!| 무엇|을| 도|와|드|릴|까요|?
|질|문|에| 대한| 답|,| 글|쓰기|나| 번|역|/|교|정|,| 코|딩| 문제| 풀이|,| 여행| 정보|,| 요|리| 레|시|피|,| 공부| 팁| 등| 다양한| 도움|을| 드|릴| 수| 있어|요|.| 원|하|시는| 주|제|나| 톤|이| 있다|면| 말씀|해| 주세요|.||||
더 알아보기:
Tool Message
도구 호출을 지원하는 모델의 경우 AI 메시지에 도구 호출이 포함될 수 있습니다. 도구 메시지는 단일 도구 실행 결과를 모델에 다시 전달하는 데 사용됩니다.
도구는 ToolMessage 객체를 직접 생성할 수 있습니다. 아래에 간단한 예제를 보여드립니다. 자세한 내용은 도구 가이드를 참조하세요.
속성
content(string, 필수): 도구 호출의 문자열화된 출력입니다.tool_call_id(string, 필수): 이 메시지가 응답하는 도구 호출의 ID입니다. (AIMessage의 도구 호출 ID와 일치해야 함)name(string, 필수): 호출된 도구의 이름입니다.artifact(dict): 모델에 전송되지 않지만 프로그래밍 방식으로 액세스할 수 있는 추가 데이터입니다.
messages = [
# 사용자 질문
HumanMessage("샌프란시스코 날씨는 어때요?"),
# 모델의 도구 호출
AIMessage(
content="",
tool_calls=[
{
"name": "get_weather",
"args": {"location": "San Francisco"},
"id": "call_123",
}
],
),
# 도구 실행 결과
ToolMessage(
content="Sunny, 72°F",
tool_call_id="call_123", # 도구 호출(tool_calls) ID와 일치해야 함
),
]
response = model.invoke(messages)
response.pretty_print()==================================[1m Ai Message [0m==================================
샌프란시스코의 오늘 날씨는 맑고 기온은 약 22°C(72°F)예요. 햇빛이 강하니 선글라스와 자외선 차단제를 챙기세요. 필요하시면 시간대별 예보나 주간 예보도 알려드릴게요. 다른 도시의 날씨도 확인해 드릴까요?
예제: 검색 메타데이터에 artifact 사용
artifact 필드는 모델에 전송되지 않지만 프로그래밍 방식으로 액세스할 수 있는 보조 데이터를 저장합니다. 이는 모델의 컨텍스트를 어지럽히지 않고 원시 결과, 디버깅 정보 또는 다운스트림 처리를 위한 데이터를 저장하는 데 유용합니다.
예를 들어, 검색(retrieval) 도구는 모델이 참조할 문서에서 구절을 검색할 수 있습니다. 메시지 content에 모델이 참조할 텍스트가 포함되어 있는 경우, artifact에는 애플리케이션이 사용할 수 있는 문서 식별자 또는 기타 메타데이터가 포함될 수 있습니다(예: 페이지 렌더링). 아래 예제를 참조하세요:
from langchain.messages import ToolMessage
# 모델에 전송됨
message_content = "그것은 최고의 시대였고, 그것은 최악의 시대였다."
# 다운스트림에서 사용 가능한 아티팩트
artifact = {"document_id": "doc_123", "page": 0}
tool_message = ToolMessage(
content=message_content,
tool_call_id="call_123",
name="search_books",
artifact=artifact,
)
tool_messageToolMessage(content='그것은 최고의 시대였고, 그것은 최악의 시대였다.', name='search_books', tool_call_id='call_123', artifact={'document_id': 'doc_123', 'page': 0})
LangChain으로 검색 에이전트를 구축하는 엔드투엔드 예제는 RAG 튜토리얼을 참조하세요.
콘텐츠(content)
메시지의 콘텐츠는 모델로 전송되는 데이터의 페이로드로 생각할 수 있습니다. 메시지에는 문자열과 타입이 지정되지 않은 객체 목록(예: 딕셔너리)을 지원하는 느슨하게 타입이 지정된 content 속성이 있습니다. 이를 통해 멀티모달 콘텐츠 및 기타 데이터와 같은 제공자 네이티브 구조를 LangChain 채팅 모델에서 직접 지원할 수 있습니다.
별도로 LangChain은 텍스트, 추론, 인용, 멀티모달 데이터, 서버 측 도구 호출 및 기타 메시지 콘텐츠에 대한 전용 콘텐츠 타입을 제공합니다. 아래 표준 콘텐츠 블록(Standard content blocks)을 참조하세요.
LangChain 채팅 모델은 content 속성에서 메시지 콘텐츠를 수락하며 다음을 포함할 수 있습니다:
- 문자열
- 제공자 네이티브 형식의 콘텐츠 블록 목록
- LangChain의 표준 콘텐츠 블록 목록
💡 정보: 메시지를 초기화할 때
content_blocks를 지정하면 여전히 메시지content를 채우지만 타입 안전 인터페이스를 제공합니다.
멀티모달 입력을 사용하는 예제는 아래를 참조하세요:
# 문자열 콘텐츠
human_message = HumanMessage("안녕하세요, 잘 지내셨나요?")
human_messageHumanMessage(content='안녕하세요, 잘 지내셨나요?', additional_kwargs={}, response_metadata={})
# 제공자 네이티브 형식 (예: OpenAI)
human_message = HumanMessage(
content=[
{"type": "text", "text": "안녕하세요, 잘 지내셨나요?"},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}},
]
)
human_messageHumanMessage(content=[{'type': 'text', 'text': '안녕하세요, 잘 지내셨나요?'}, {'type': 'image_url', 'image_url': {'url': 'https://example.com/image.jpg'}}], additional_kwargs={}, response_metadata={})
# 표준 콘텐츠 블록 목록
human_message = HumanMessage(
content_blocks=[
{"type": "text", "text": "안녕하세요, 잘 지내셨나요?"},
{"type": "image", "url": "https://example.com/image.jpg"},
]
)
human_messageHumanMessage(content=[{'type': 'text', 'text': '안녕하세요, 잘 지내셨나요?'}, {'type': 'image', 'url': 'https://example.com/image.jpg'}], additional_kwargs={}, response_metadata={})
표준 콘텐츠 블록
LangChain은 제공자 간에 작동하는 메시지 콘텐츠에 대한 표준 표현을 제공합니다.
메시지 객체는 content 속성을 표준 타입 안전 표현으로 지연 파싱하는 content_blocks 속성을 구현합니다. 예를 들어, ChatAnthropic 또는 ChatOpenAI]에서 생성된 메시지에는 각 제공자의 형식으로 thinking 또는 reasoning 블록이 포함되지만 일관된 ReasoningContentBlock 표현으로 지연 파싱될 수 있습니다:
# OpenAI
message = AIMessage(
content=[
{
"type": "reasoning",
"id": "rs_abc123",
"summary": [
{"type": "summary_text", "text": "summary 1"},
{"type": "summary_text", "text": "summary 2"},
],
},
{"type": "text", "text": "...", "id": "msg_abc123"},
{"type": "image", "url": "https://example.com/image.jpg"},
],
response_metadata={"model_provider": "openai"}, # openai
)
message.content_blocks[{'type': 'reasoning', 'id': 'rs_abc123', 'reasoning': 'summary 1'},
{'type': 'reasoning', 'id': 'rs_abc123', 'reasoning': 'summary 2'},
{'type': 'text', 'text': '...', 'id': 'msg_abc123'},
{'type': 'image', 'url': 'https://example.com/image.jpg'}]
# Anthropic
message = AIMessage(
content=[
{"type": "thinking", "thinking": "...", "signature": "WaUjzkyp..."},
{"type": "text", "text": "hello"},
],
response_metadata={"model_provider": "anthropic"}, # anthropic
)
message.content_blocks[{'type': 'reasoning',
'reasoning': '...',
'extras': {'signature': 'WaUjzkyp...'}},
{'type': 'text', 'text': 'hello'}]
표준 콘텐츠 직렬화
LangChain 외부의 애플리케이션이 표준 콘텐츠 블록 표현에 액세스해야 하는 경우 메시지 콘텐츠에 콘텐츠 블록을 저장하도록 선택할 수 있습니다.
이를 위해 LC_OUTPUT_VERSION 환경 변수를 v1으로 설정할 수 있습니다. 또는 output_version="v1"로 채팅 모델을 초기화하세요:
model = init_chat_model("openai:gpt-5-nano", output_version="v1")멀티모달
멀티모달리티(Multimodality) 는 텍스트, 오디오, 이미지, 비디오와 같이 다양한 형태로 제공되는 데이터로 작업할 수 있는 기능을 의미합니다. 채팅 모델은 멀티모달 데이터를 입력으로 받아들이고 출력으로 생성할 수 있습니다.
ℹ️ 정보: 추가 키는 content block의 최상위 레벨에 포함되거나
"extras": {"key": value}에 중첩될 수 있습니다.예를 들어, OpenAI와 AWS Bedrock Converse는 PDF에 대한 파일 이름이 필요합니다. 자세한 내용은 선택한 모델의 Provider를 참조하세요.
주의: 모든 모델이 모든 파일 타입을 지원하는 것은 아닙니다. 지원되는 형식과 크기 제한은 모델 제공자의 참조 문서를 확인하세요.
Image 입력
# URL에서
message = {
"role": "user",
"content": [
{"type": "text", "text": "이 이미지의 내용을 설명하세요."},
{
"type": "image",
"url": "https://cdn.pixabay.com/photo/2025/10/17/09/29/nature-9899712_1280.jpg",
},
],
}
response = model.invoke([message])
response.pretty_print()==================================[1m Ai Message [0m==================================
이 이미지는 두 마리의 양이 풀을 뜯고 있는 모습을 보여줍니다. 양의 털은 흰색이고 곱슬곱슬하며, 머리에는 양의 털이 뭉쳐져 있습니다. 양은 목이 길게 늘어져 있으며, 바닥에 있는 풀을 먹고 있습니다. 배경은 자연 환경으로 보이며, 바닥은 풀과 땅이 섞인 모습입니다. 전체적으로 평화롭고 자연스러운 농장 또는 목장 풍경입니다.
# base64 데이터에서
import base64
image_base64 = ""
image_path = "img/cow-9889436_1280.jpg"
with open(image_path, "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
image_base64 = encoded_string.decode("utf-8")
message = {
"role": "user",
"content": [
{"type": "text", "text": "이 이미지의 내용을 설명하세요."},
{
"type": "image",
"base64": image_base64,
"mime_type": "image/jpeg",
},
],
}
response = model.invoke([message])
response.pretty_print()==================================[1m Ai Message [0m==================================
이 이미지는 들판 또는 목초지에 서 있는 소와 송아지의 모습입니다. 배경에는 산과 나무들이 있으며, 햇볕이 지평선 뒤에 있어 따뜻하고 평화로운 분위기를 자아냅니다. 소는 검은색 또는 짙은 색의 털을 가지고 있으며, 송아지는 좀 더 작은 크기로 소 곁에 서 있습니다. 전체적으로 자연 속에서 평화롭게 풀을 뜯거나 쉬고 있는 가축들의 모습이 담긴 사진입니다.
# 제공자 관리 파일 ID에서
message = {
"role": "user",
"content": [
{"type": "text", "text": "이 이미지의 내용을 설명하세요."},
{"type": "image", "file_id": "file-abc123"},
],
}PDF 문서 입력
# URL에서
message = {
"role": "user",
"content": [
{"type": "text", "text": "이 문서의 내용을 설명하십시오."},
{"type": "file", "url": "https://arxiv.org/pdf/2511.02752"},
],
}
# base64 데이터에서
message = {
"role": "user",
"content": [
{"type": "text", "text": "이 문서의 내용을 설명하십시오."},
{
"type": "file",
"base64": "AAAAIGZ0eXBtcDQyAAAAAGlzb21tcDQyAAACAGlzb2...",
"mime_type": "application/pdf",
},
],
}
# 제공자 관리 파일 ID에서
message = {
"role": "user",
"content": [
{"type": "text", "text": "이 문서의 내용을 설명하십시오."},
{"type": "file", "file_id": "file-abc123"},
],
}Audio 입력
# base64 데이터에서
message = {
"role": "user",
"content": [
{"type": "text", "text": "이 오디오의 내용을 설명하세요."},
{
"type": "audio",
"base64": "AAAAIGZ0eXBtcDQyAAAAAGlzb21tcDQyAAACAGlzb2...",
"mime_type": "audio/wav",
},
],
}
# 제공자 관리 파일 ID에서
message = {
"role": "user",
"content": [
{"type": "text", "text": "이 오디오의 내용을 설명하세요."},
{"type": "audio", "file_id": "file-abc123"},
],
}Video 입력
# base64 데이터에서
message = {
"role": "user",
"content": [
{"type": "text", "text": "이 동영상의 내용을 설명하세요."},
{
"type": "video",
"base64": "AAAAIGZ0eXBtcDQyAAAAAGlzb21tcDQyAAACAGlzb2...",
"mime_type": "video/mp4",
},
],
}
# 제공자 관리 파일 ID에서
message = {
"role": "user",
"content": [
{"type": "text", "text": "이 동영상의 내용을 설명하세요."},
{"type": "video", "file_id": "file-abc123"},
],
}콘텐츠 블록 레퍼런스
콘텐츠 블록은 (메시지를 생성하거나 content_blocks 속성에 액세스할 때) 타입이 지정된 딕셔너리 목록으로 표현됩니다. 목록의 각 항목은 블록 타입 중 하나를 준수해야 합니다. 블록 타입은 콘텐츠 블록 레퍼런스 문서를 참고하세요. 정규 타입 정의는 API reference에서 확인하세요.
콘텐츠 블록은 기존 코드와의 하위 호환성을 유지하면서 제공자 간 콘텐츠 형식을 표준화하기 위해 LangChain v1의 메시지에 새로운 속성으로 도입되었습니다. 콘텐츠 블록은 content 속성을 대체하는 것이 아니라 표준화된 형식으로 메시지 콘텐츠에 액세스하는 데 사용할 수 있는 새로운 속성입니다.
채팅 모델과 함께 사용
채팅 모델은 메시지 객체의 시퀀스를 입력으로 받아 AIMessage를 출력으로 반환합니다. 상호작용은 종종 상태 비저장이므로 간단한 대화 루프는 증가하는 메시지 목록으로 모델을 호출하는 것을 포함합니다.
자세한 내용은 아래 가이드를 참조하세요:
- 대화 기록 유지 및 관리를 위한 내장 기능
- 메시지 트리밍 및 요약을 포함한 컨텍스트 윈도우 관리 전략