
langchain-translator/
├── .env
├── translate.py
├── requirements.txt
└── (추가 폴더 및 파일: 필요시)
langchain-translator/: 폴더명(원하는 대로 지정)
.env: OpenAI API 키 등 환경 변수 저장 파일
translate.py: Python 메인 실행 파일 (코드 예시 그대로)
requirements.txt: 설치해야 할 패키지 목록 (옵션, 배포 시 유용)
.envOPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrequirements.txt이 파일은 패키지 설치 자동화를 위해 사용합니다.
내용 예시:
langchain_core
langchain_openai
python-dotenv
pip install -r requirements.txt
translate.pytranslate.py가 이해하기 쉽고 관리에 편리합니다.python translate.py이렇게 명령을 내립니다..gitignore 작성 예시.env 파일을 무시하세요!.env
venv/
__pycache__/
langchain-translator)translate.py, .env, requirements.txt 생성 및 채우기python -m venv venv
source venv/bin/activate # macOS/Linux
.\venv\Scripts\activate # Windowspip install -r requirements.txtpython translate.py(옵션) 파일/폴더 정리 꿀팁
- 추가적으로, 코드가 복잡해지면 다음처럼 코드와 환경 파일, 실행 파일을 별도로 관리해도 좋습니다:
project/ ├── src/ │ └── translate.py ├── .env ├── requirements.txt └── README.md- 이때 실행은
src/translate.py로 경로만 신경 쓰면 됩니다..env경로를 바꿀 경우,load_dotenv(dotenv_path='경로')파라미터로 쉽게 지정할 수 있습니다.
OpenAI 홈페이지에서 API 키를 발급받아주세요.
프로젝트 폴더에 .env 파일 생성 후 다음 내용 입력
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
import os
from dotenv import load_dotenv
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
# 환경 변수(.env)에서 API 키 불러오기
load_dotenv()
os.environ['OPENAI_API_KEY'] = os.getenv("OPENAI_API_KEY")
def create_translation_chain():
# 1. 시스템 프롬프트(지시문) 템플릿 생성
system_template = "다음 한국어 문장을 {language}로 번역하세요:"
# 2. ChatPromptTemplate을 활용하여 프롬프트 구조화
prompt_template = ChatPromptTemplate.from_messages([
('system', system_template),
('user', '{text}')
])
# 3. LLM(OpenAI 챗모델) 초기화 (온도 값 조정 가능)
model = ChatOpenAI(temperature=0.7)
# 4. 출력 파서 정의 (문자열 반환)
parser = StrOutputParser()
# 5. LangChain 체인으로 연결 (프롬프트 → 모델 → 파서)
translation_chain = prompt_template | model | parser
return translation_chain
def main():
print("LangChain 번역 애플리케이션!")
# 번역 체인 객체 생성
translation_chain = create_translation_chain()
# 사용자에게 번역할 문장·목표 언어 입력 받기
text = input("번역할 한국어 문장을 입력하세요: ")
language = input("어떤 언어로 번역할까요? (예: 영어, 일본어, 중국어 등) ")
# 번역 실행 및 결과 출력
try:
result = translation_chain.invoke({"language": language, "text": text})
print(f"\n번역 결과:\n{result}")
except Exception as e:
print("오류:", e)
if __name__ == "__main__":
main()
import os
from dotenv import load_dotenv
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
load_dotenv()
os.environ['OPENAI_API_KEY'] = os.getenv("OPENAI_API_KEY")
def create_translation_chain():
system_template = "다음 한국어 문장을 {language}로 번역하세요:"
prompt_template = ChatPromptTemplate.from_messages([
('system', system_template),
('user', '{text}')
])
model = ChatOpenAI(temperature=0.7)
parser = StrOutputParser()
return prompt_template | model | parser
def main():
print("LangChain 번역 애플리케이션!")
translation_chain = create_translation_chain()
text = input("번역할 한국어 문장을 입력하세요: ")
language = input("어떤 언어로 번역할까요? (예: 영어, 일본어, 중국어 등) ")
try:
result = translation_chain.invoke({"language": language, "text": text})
print(f"\n번역 결과:\n{result}")
except Exception as e:
print("오류:", e)
if __name__ == "__main__":
main()
python translate.py
import os
import httpx
from dotenv import load_dotenv
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
# .env에서 API 키 불러오기
load_dotenv()
os.environ['OPENAI_API_KEY'] = os.getenv("OPENAI_API_KEY")
# https 인증 오류 우회용 httpx 클라이언트 생성 (SSL 비검증)
my_http_client = httpx.Client(verify=False)
def create_translation_chain():
# 1. 시스템 프롬프트(지시문) 템플릿 생성
system_template = "다음 한국어 문장을 {language}로 번역하세요: "
# 2. ChatPromptTemplate을 활용하여 프롬프트 구조화
prompt_template = ChatPromptTemplate.from_messages(
[
('system', system_template),
('user', '{text}'),
]
)
# 3. LLM(OpenAI 챗 모델) 초기화 (온도 값 및 http_client 전달)
model = ChatOpenAI(
temperature=0.7,
http_client=my_http_client
)
# 4. 출력 파서 설정 (문자열 반환)
parser = StrOutputParser()
translation_chain = prompt_template | model | parser
return translation_chain
def main():
print("LangChain 번역 애플리케이션!")
# 번역 체인 객체 생성
translation_chain = create_translation_chain()
# 사용자에게 번역할 문장·목표 언어 입력 받기
text = input("번역할 한국어 문장을 입력하세요: ")
language = input("어떤 언어로 번역할까요? (예: 영어, 일본어, 중국어 등) ")
# 번역 실행 및 결과 출력
try:
result = translation_chain.invoke({"language": language, "text": text})
print(f"\n번역 결과:\n{result}")
except Exception as e:
print("오류:", e)
if __name__ == "__main__":
main()

LangChain 번역 애플리케이션!
번역할 한국어 문장을 입력하세요: 안녕하세요, 오늘 기분이 어떠신가요?
어떤 언어로 번역할까요? (예: 영어, 일본어, 중국어 등) 영어
번역 결과:
Hello, how are you feeling today?
프롬프트 템플릿: 명확한 작업 지시 및 입력 변수(언어, 번역할 문장) 정의
LLM: OpenAI의 GPT 모델을 활용해 자연스러운 번역 수행
파서: LLM 답변을 사용자 출력을 위한 문자열로 변환
여러 언어 동시에 번역 지원
번역 결과 로그·캐싱
프롬프트에 “공식/비공식” 등 스타일 지정 가능
Flask, Streamlit 등으로 웹 UI 구현
언어 감지-자동 번역 기능 추가
LangChain을 활용하면 LLM(대형 언어 모델) 기능을 이용한 애플리케이션을 매우 빠르고 모듈화된 방식으로 개발할 수 있습니다.
“프롬프트 → 모델 → 파싱” 흐름을 자유롭게 구성
다양한 추가 기능 쉽게 연동
실제 서비스 레벨까지 손쉽게 진화 가능
“입력값을 받아 맞춤형 답변 생성 (PromptTemplate + LLMChain)”
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
llm = OpenAI(api_key='YOUR_API_KEY_HERE')
prompt = PromptTemplate(
input_variables=['dish'],
template="한국식 {dish} 요리법을 친절하게 설명해줘."
)
chain = LLMChain(llm=llm, prompt=prompt)
answer = chain.run(dish="김치찌개")
print(answer)
“LLM이 직접 계산하거나 실시간 정보 검색”
from langchain.agents import initialize_agent, load_tools
from langchain.llms import OpenAI
llm = OpenAI(api_key='YOUR_API_KEY_HERE')
tools = load_tools(["llm-math", "serpapi"], llm=llm)
agent = initialize_agent(
tools, llm, agent="zero-shot-react-description", verbose=True
)
print(agent.run("광화문에서 오늘 날씨와 3 곱하기 12의 값 알려줘"))
“내 문서에서만 정확하게 답 뽑아내는 Q&A 챗봇”
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.document_loaders import TextLoader
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
# 1. 문서 임베딩 및 벡터DB 저장
loader = TextLoader('./my_guide.txt')
docs = loader.load()
embeddings = OpenAIEmbeddings()
db = FAISS.from_documents(docs, embeddings)
# 2. QA 체인 생성
qa = RetrievalQA.from_chain_type(
llm=OpenAI(api_key='YOUR_API_KEY_HERE'),
retriever=db.as_retriever()
)
# 3. 질문!
query = "이 가이드에서 '워크플로우'란 무엇인가요?"
print(qa.run(query))
“사용자 요청에 따라 처리 루트가 달라지는 그래프 흐름”
import langgraph
from langgraph.nodes import Node, InputNode, OutputNode
def greet_user(inputs):
name = inputs['name']
return {"greeting": f"안녕하세요, {name}님"}
def check_task(inputs):
if inputs['task'] == "검색":
return "search"
else:
return "default"
def do_search(inputs):
# 실제 검색 코드는 생략
return {"result": "검색 결과!"}
def default_action(inputs):
return {"result": "일반 처리!"}
graph = langgraph.Graph()
graph.add_node(InputNode())
graph.add_node(Node("greet", greet_user))
graph.add_node(Node("branch", check_task, branch_targets={"search": "search_task", "default": "default"}))
graph.add_node(Node("search_task", do_search))
graph.add_node(Node("default", default_action))
graph.add_node(OutputNode())
graph.connect("input", "greet")
graph.connect("greet", "branch")
graph.connect("branch", ["search_task", "default"])
graph.connect(["search_task", "default"], "output")
inputs = {"name": "이순신", "task": "검색"}
result = graph.run("input", inputs)
print(result)
“LangChain/Agent 실행 과정 자동 추적 + 대시보드 보기”
from langchain.llms import OpenAI
from langsmith import traceable
llm = OpenAI(api_key='YOUR_API_KEY_HERE')
@traceable(name="custom_test_chain")
def my_chain(question):
return llm(f"다음 질문에 답해줘: {question}")
# 실행하는 모든 chain이 LangSmith 대시보드에 자동 로깅됨!
result = my_chain("LangChain의 특징을 3가지로 정리해줘.")
print(result)
내 사내 데이터(메뉴얼, 매뉴얼, 문서 등) 업로드→ RAG형 상담봇 즉시 구현
복잡한 챗봇: 조건~반복 구조 그래프( LangGraph ) 설계로 대화루트 자유롭게
품질 개선: LangSmith로 출시 후 실제 대화 로그/에러 분석 → 서비스 고도화
프롬프트 버전별 MVP 실험: 한 번에 여러 프롬프트 실험 후 LangSmith로 비교