본문으로 건너뛰기

LangChain

LangChain은 LLM 기반 애플리케이션 구축을 위한 프레임워크입니다.
RAG, 에이전트, 체인 구성 등 고급 AI 파이프라인을 쉽게 만들 수 있습니다.

설치

pip install langchain langchain-openai

기본 설정

from langchain_openai import ChatOpenAI
import os

llm = ChatOpenAI(
model="gemma4-26b",
api_key=os.environ["IWINV_API_KEY"],
base_url="https://ai-api.iwinv.kr/v1"
)

기본 호출

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
SystemMessage(content="당신은 친절한 AI 어시스턴트입니다."),
HumanMessage(content="iwinv 클라우드에 대해 알려주세요.")
]

response = llm.invoke(messages)
print(response.content)

프롬프트 템플릿

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
("system", "당신은 {role} 전문가입니다."),
("user", "{question}")
])

chain = prompt | llm

response = chain.invoke({
"role": "클라우드 인프라",
"question": "GPU 서버 선택 기준을 알려주세요."
})
print(response.content)

RAG 파이프라인

문서를 검색해 답변을 생성하는 RAG(Retrieval-Augmented Generation) 파이프라인입니다.

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

# 문서 로드 (예시)
documents = [
"iwinv는 국내 클라우드 서비스 기업입니다.",
"iwinv AI API는 단일 Key로 다양한 LLM을 사용할 수 있습니다.",
"iwinv GPU 서버는 RTX 4090, RTX 5090 등을 지원합니다."
]

def retrieve(query: str) -> str:
# 실제 사용 시 벡터 DB로 대체
return "\n".join(documents)

prompt = ChatPromptTemplate.from_template("""
다음 컨텍스트를 참고하여 질문에 답하세요.

컨텍스트:
{context}

질문: {question}
""")

llm = ChatOpenAI(
model="gemma4-26b",
api_key=os.environ["IWINV_API_KEY"],
base_url="https://ai-api.iwinv.kr/v1"
)

chain = (
{"context": retrieve, "question": lambda x: x}
| prompt
| llm
| StrOutputParser()
)

print(chain.invoke("iwinv AI API가 무엇인가요?"))

스트리밍

for chunk in llm.stream("iwinv 클라우드의 장점을 설명해주세요."):
print(chunk.content, end="", flush=True)