LangChain, LlamaIndex 에서 업스테이지 제품들을 더 쉽게 사용하실 수 있도록 업데이트 되었습니다.
- langchain-upstage v0.7.3
- llama-index-llms-upstage v0.6.2
1. LangChain 주요 업데이트 사항
- Python 3.8 버전 지원이 종료되었습니다.
- Chat 에서 Solar Pro 2 모델을 이용하실 수 있습니다. 또한 새로 추가된 파라미터들도 사용하실 수 있습니다.
- Document Parse 에서
chart_recognition
파라미터를 사용하실 수 있습니다.
chart_recognition
파라미터는 차트 인식 사용 여부를 나타내는 boolean 값입니다. true로 설정할 시 차트 인식률이 올라갑니다. Default 값은 true입니다.
- Groundedness Check 에서
temperature
파라미터를 사용하실 수 있습니다.
- 출력의 무작위성을 제어하는 파라미터로, 값이 클수록(예: 0.8) 출력의 무작위성이 높아지고, 값이 작을수록(예: 0.2) 출력의 집중도와 결정성이 높아집니다. Default 값은 0.7입니다.
- 이제 Information Extract 제품을 Langchain에서도 만나보실 수 있습니다.
- Information Extraction 이란 단순히 문서를 디지털화하는 것을 넘어서, 비정형 문서(unstructured documents)에서 핵심 정보를 식별하고 추출하여, 그 중요한 정보들을 데이터베이스와 같은 정형화된 형식(structured formats)으로 저장하는 과정을 의미합니다.
- Universal Information Extraction 는 범용 문서 정보 추출 기술로 이전에 본 적 없는 어떤 종류의 문서에서도 추가적인 학습이나 맞춤 설정(customization) 없이 핵심 정보를 추출할 수 있는 매우 유연하고 강력한 기술입니다.
- Universal information extraction을 사용하면 ‘정형화되지 않은 문서’도 정보를 추출할 수 있습니다.
from langchain_upstage import UpstageUniversalInformationExtraction
information_extraction = UpstageUniversalInformationExtraction(api_key="your_api_key")
response = information_extraction.extract(
image_urls=["./bank_statement.png"], # 원하시는 파일 경로를 작성해주시면 됩니다.
response_format={
"type": "json_schema",
"json_schema": {
"name": "document_schema",
"schema": {
"type": "object",
"properties": {
"bank_name": {
"type": "string",
"description": "The name of bank in bank statement"
}
}
}
}
}
)
print(response)
- 만약 출력에 필요한
response_format
을 어떻게 작성해야 할 지 감이 안오시는 경우schema_generation
을 통해 자동으로 추출하실 수도 있습니다.
from langchain_upstage import UpstageUniversalInformationExtraction
information_extraction = UpstageUniversalInformationExtraction(
api_key="your_api_key"
)
response = information_extraction.schema_generation(
image_urls=["./bank_statement.png"], # 원하시는 파일 경로를 작성해주시면 됩니다.
)
print(response)
- 이 둘을 합쳐서 더 간단하게 구성하실 수도 있습니다.
from langchain_upstage import UpstageUniversalInformationExtraction
information_extraction = UpstageUniversalInformationExtraction(
api_key="your_api_key"
)
image_urls=["./bank_statement.png"], # 원하시는 파일 경로를 작성해주시면 됩니다.
response_format = information_extraction.schema_generation(
image_urls=image_urls,
)
response = information_extraction.extract(
image_urls=image_urls,
response_format=response_format,
)
print(response)
- Prebuilt Information Extraction 은 사전 구축형 정보 추출 기술로, 특정 종류의 문서에서 원하는 정보를 즉시 추출할 수 있도록 미리 학습되고 만들어진 AI 모델 또는 솔루션을 의미합니다. 사용자가 직접 AI 모델을 개발하거나 데이터를 모아 학습시킬 필요 없이, 이미 완성된 제품을 바로 가져다 쓰는 개념입니다.
- 학습된 모델 종류는 다음과 같습니다.
- 문서 추출은 다음과 같이 손쉽게 구성할 수 있습니다.
from langchain_upstage import UpstagePrebuiltInformationExtraction
api_key = "your_api_key"
file_name = "your_file_name" # 원하시는 파일 경로를 작성해주시면 됩니다.
model = "model_name_what_you_want" # 위에 명시된 모델명 입력해주시면 됩니다.
information_extraction = UpstagePrebuiltInformationExtraction(api_key=api_key), model=model)
response = information_extraction.extract(
filename=file_name,
)
print(response)
LlamaIndex 주요 업데이트 사항
- Chat 에서 Solar Pro 2를 이용하실 수 있습니다.
- Chat의
top_p
,frequency_penalty
,presence_penalty
,response_format
파라미터를 사용하실 수 있습니다.
llm = Upstage(
api_key="your_api_key",
model="solar-pro2",
top_p=0.8,
frequency_penalty=2,
presence_penalty=2,
response_format={
"type": "json_object",
}
)
response = llm.chat(
messages=[
ChatMessage(role="user", content="원하는 메시지를 여기에 적어보세요!")
],
)
print(response)
top_p
- 핵 샘플링(Nucleus Sampling)을 활성화하는 선택적 매개변수입니다. 모델이 다음 단어를 예측할 때, 가능한 모든 단어 중에서 확률이 높은 순서대로 후보를 정합니다. 이 후보들의 누적 확률의 합이 해당 값에 도달할 때까지만 고려하는 방식입니다.
- 낮은 값 (예: 0.1): 매우 가능성이 높은 단어들만 사용하므로, 더 예측 가능하고 일관된 문장이 생성됩니다.
- 높은 값 (예: 1): 더 많은 단어들이 후보가 되므로, 더 다양하고 창의적인 문장이 생성될 수 있습니다.
frequency_penalty
- 이미 생성된 텍스트에서 특정 단어(토큰)가 얼마나 자주 등장했는지에 따라 페널티를 부과하는 매개변수입니다.
- 양수 값 (예: 0.5): 모델이 이미 많이 사용한 단어를 다시 사용할 확률을 낮춥니다. "그리고... 그리고... 그리고..." 와 같은 반복을 줄이고 더 다양한 어휘를 사용하도록 유도합니다.
- 음수 값: 반대로 특정 단어를 더 자주 사용하도록 유도할 수 있습니다.
presence_penalty
- 텍스트에 특정 단어(토큰)가 한 번이라도 등장했는지 여부에 따라 페널티를 부과하는 매개변수입니다.
frequency_penalty
가 단어의 '빈도'에 따라 페널티를 조절하는 것과 달리,presence_penalty
는 단어의 '출현 유무' 자체에만 영향을 줍니다. - 양수 값 (예: 0.5): 이미 한 번이라도 언급된 단어는 다시 사용할 확률이 낮아집니다. 이를 통해 모델이 새로운 주제나 개념을 더 적극적으로 도입하도록 장려할 수 있습니다.
- 음수 값: 반대로 이미 언급된 주제나 단어에 더 집중하도록 유도할 수 있습니다.
- 텍스트에 특정 단어(토큰)가 한 번이라도 등장했는지 여부에 따라 페널티를 부과하는 매개변수입니다.
response_format
- 모델이 생성하는 응답의 출력 형식을 지정하는 객체(object)입니다.
- 이 매개변수를 사용하면 모델의 출력을 일반 텍스트가 아닌, JSON 형식과 같이 특정 구조를 가진 형식으로 강제할 수 있습니다. 예를 들어,
{'type': 'json_object'}
와 같이 설정하면, 모델은 반드시 유효한 JSON 형식의 텍스트를 출력합니다. - 애플리케이션에서 모델의 응답을 기계적으로 처리(파싱)해야 할 때 매우 유용합니다.
- Chat의
reasoning_effort
파라미터가 정상적으로 적용되도록 수정되었습니다.