랭체인 주요 모듈 5가지
2
랭체인
1
모델 I/O (Model I/O)
언어 모델과 상호 작용을 위한 모듈이다.
3가지가 있다.
LLM에 전달될 프롬프트 생성
답변을 받기 위해 랭귀지 모델 API 호출
답변 출력
2
1) Model I/O - LLM에 전달될 프롬프트 생성
# 전달할 프롬프트만 표시하는 예제이다.
# 코랩 접속 실습 - alt + enter 실행이다.
from langchain import PromptTemplate
template = "{product}를 홍보하기 위한 좋은 문구를 추천해줘?"
prompt = PromptTemplate(
input_variables=["product"],
template=template,
)
prompt.format(product="카메라")
결과
카메라를 홍보하기 위한 좋은 문구를 추천해줘?
2) Model I/O - 답변을 받기 위해 랭귀지 모델 API 호출
# LLM 호출 , 직접 api 입력하고 응답 받아보자.
# LLM을 호출해 물어보자.
# import os 해서 소스에 OPENAI_API_KEY를 넣고 실행하는 방법과 Colab에 넣어둔 API_KEY를 호출하는 방법이 있다. 여기서는 import os 해서 소스에 API_KEY를 넣고 실행 하자.
from langchain_community.chat_models import ChatClovaX
chat = ChatClovaX(model="HCX-003")
messages= "지희가 강아지를 키우고 있습니다. 지희가 키우고 있는 동물은?"
ai_msg = chat.invoke(messages)
ai_msg
AIMessage(content='강아지 입니다
3) Model I/O - 출력 형식을 정하자.
# 답변 출력 , 콤마로 구분하는 출력을 내보자.
# 입력1-1
from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain.prompts import PromptTemplate
from langchain_community.chat_models import ChatClovaX
chat = ChatClovaX(
model="HCX-003",
)
output_parser = CommaSeparatedListOutputParser() #파서 초기화
format_instructions = output_parser.get_format_instructions() #출력 형식 지정
prompt = PromptTemplate(
template="7개의 팀을 보여줘 {subject}.\n{format_instructions}",
input_variables=["subject"],
partial_variables={"format_instructions": format_instructions}
)
query = "한국의 야구팀은?"
# 출력 결과 생성
output = chat.predict(text=prompt.format(subject=query))
# 출력에 대한 포맷 변경
parsed_result = output_parser.parse(output)
print(parsed_result)
['두산 베어스', 'LG 트윈스', '키움 히어로즈', 'SSG 랜더스', 'NC 다이노스', '삼성 라이온즈', 'KIA 타이거즈']
# 질문 변경해서 테스트
query = "한국의 축구팀은?"
['FC 서울', '전북 현대 모터스', '수원 삼성 블루윙즈', '울산 현대', '포항 스틸러스', '성남 FC', '인천 유나이티드']
# 질문 변경해서 테스트
query = "한국의 농구팀은?"
['서울 삼성 썬더스', '인천 전자랜드 엘리펀츠', '원주 DB 프로미', '부산 KT 소닉붐', '서울 SK 나이츠', '창원 LG 세이커스', '고양 오리온스']
# 실습
1
네이버 클로바 스트디오에서 정보 확인
CLOVA Studio > CLOVA Studio 바로 가기 > 익스플로러 > 임베딩 v1 > 시작하기
테스트 앱 생성
# 이미 생성한 앱이 있다면 확인
오른쪽 위 이름 > 앱 신청 현황 > 테스트 앱 > 자세히
2
# NCP_CLOVASTUDIO_APP_ID 확인법
익스플로러 > 임베딩 V1 사용 필수 = model="clir-emb-dolphin" 사용시 = 디폴트
임베딩 V2 아님
# 3가지 값을 복사해 놓는다.
3
# app id 설정
import os
os.environ["NCP_CLOVASTUDIO_APP_ID"] = input("테스트/서비스 App ID 입력: ")
4
# 기본 모델 사용하도록 하자.
model="clir-emb-dolphin"
https://clovastudio.ncloud.com/explorer/tools/embedding
5
# 모델 확인
from langchain_community.embeddings import ClovaXEmbeddings
embeddings = ClovaXEmbeddings(
model="clir-emb-dolphin", # 이용할 테스트 앱 또는 서비스 앱에 해당하는 모델 (기본값: clir-emb-dolphin)
# app_id="..." # App ID를 환경 변수로 설정하지 않고 이용하려면 직접 입력
)
6
# 쿼리
query = "CLOVA Studio는 HyperCLOVA X 언어 모델을 활용하여 AI 서비스를 손쉽게 만들 수 있는 개발 도구입니다."
single_vector = embeddings.embed_query(query)
7
# 전체 코드
import os
import time
import httpx # Import httpx for error handling
# Ensure your API keys and App ID are correctly set:
os.environ["NCP_CLOVASTUDIO_API_KEY"] = "NTA0Iyvs+M" # Replace with your actual API key
os.environ["NCP_APIGW_API_KEY"] = "OOiWeIfDJEIsinKpG" # Replace with your actual API key
os.environ["NCP_CLOVASTUDIO_APP_ID"] = "7a1b5e593a7" # Replace with your actual App ID
from langchain_community.embeddings import ClovaXEmbeddings
# Verify that the model name is correct:
embeddings = ClovaXEmbeddings(
model="clir-emb-dolphin"
)
query = "CLOVA Studio는 HyperCLOVA X 언어 모델을 활용하여 AI 서비스를 손쉽게 만들 수 있는 개발 도구입니다."
single_vector = embeddings.embed_query(query)
text1 = "CLOVA Studio는 HyperCLOVA X 언어 모델을 활용하여 AI 서비스를 손쉽게 만들 수 있는 개발 도구입니다."
text2 = "LangChain은 언어 모델 기반 애플리케이션 개발을 지원하는 오픈소스 프레임워크입니다."
document = [text1, text2]
multiple_vector = embeddings.embed_documents(document)
# Wrap the embed_documents call in a try-except block:
try:
multiple_vector = embeddings.embed_documents(document)
print("Embedding successful:", multiple_vector)
except httpx.HTTPStatusError as e:
print(f"Error embedding documents: {e}")
print("Check your API credentials, App ID, and input data.")
except Exception as e:
print(f"An unexpected error occurred: {e}")
# 실행 결과
Embedding successful: [[-0.1444314, -0.42066774, -0.49758446, 1.635389, -1.2320397, -1.0212829, -0.4536954, 1.3893111, 0.42442882, 1.1943156, -1.1166681, 1.037053, 1.3693014, 1.0157889, -0.35351172, 0.27527523, -0.8842913, -0.21360481, 0.7530616, 0.9029042, -0.0005863653, -0.303001, 1.071709, 0.9480032, 1.218421,
# code
1
# LangChain을 통해 CLOVA Studio의 HyperCLOVA X 모델을 이용하는 예제 코드
2
랭체인 연동 문서
3
공식 문서
https://python.langchain.com/docs/integrations/text_embedding/naver/
1
# Create a vector store with a sample text
from langchain_core.vectorstores import InMemoryVectorStore
text = "CLOVA Studio is an AI development tool that allows you to customize your own HyperCLOVA X models."
vectorstore = InMemoryVectorStore.from_texts(
[text],
embedding=embeddings,
)
# Use the vectorstore as a retriever
retriever = vectorstore.as_retriever()
# Retrieve the most similar text
retrieved_documents = retriever.invoke("What is CLOVA Studio?")
# show the retrieved document's content
retrieved_documents[0].page_content
2
single_vector = embeddings.embed_query(text)
print(str(single_vector)[:100]) # Show the first 100 characters of the vector
다음
https://brunch.co.kr/@topasvga/4225