1
실습 코드 다운로드
2
패키지 설치
!pip install U langchain naver
2
C LOVA Studio Key 등록
import getpass
import os
if not os.getenv("CLOVASTUDIO_API_KEY"):
os.environ["CLOVASTUDIO_API_KEY"] = getpass.getpass(
"Enter your CLOVA Studio API Key:
키 등록
4
파라미터 설정
from langchain_naver import ChatClovaX
chat = ChatClovaX(
model="HCX 005",
temperature=0.5,
max_tokens=None,
timeout=None,
max_retries=2,
# other
)
5. 템플릿 작성 : 요약 보고서 작성
from langchain.prompts import PromptTemplate, ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages(
("system", 너는 전문적인 보고서 작성 AI 야 . 사용자의 요청에 맞춰 명확하고 간결하게 요약 보고서를 작성
해 줘
("human", 다음 내용을 요약하고 , 임원에게 전달할 형식으로 작성해 줘 n n{document}"),
)
chain = prompt | chat
user_input = """
오늘 회의에서는 마케팅팀이 상반기 광고 성과에 대해 보고했고
전년 대비 클릭률이 25% 상승했고 , 전환 율은 18% 증가했음
다만 SNS 채널의 참여율은 하락했고 , 관련 개선 방안을 다음 주까지 제출하기로 함
"""
response=chain.invoke(
"document": user_input
)
print(response.content)
6. 멀티턴 프롬프트 작성
from openai import OpenAI
from langchain.prompts.chat import ChatPromptTemplate
from langchain.schema import HumanMessage, AIMessage
#
� 1. 초기 메시지와 프롬프트 정의
def create_base_prompt():
return [
("system", 너는 정중한 고객센터 AI 야 . 항상 고객의 질문에 친절하게 답변해
#
� 2. 대화 히스토리를 기반으로 메시지 생성
def build_chat_prompt(history):
return ChatPromptTemplate.from_messages(history)
#
� 3. HyperCLOVA X API 호출 함수
def call_llm(client, messages):
print("Messages being sent to API:")
print(messages) # Add print statement here
response = client.chat.completions.create(
model="HCX 005",
messages=messages
return response.choices[0].message.content
#
� 4. 메시지 변환 (LangChain 객체 → OpenAI 형식
def convert_to_openai_messages(formatted_messages):
role_map = {
"system": "
"hum an": "user",
"ai": "
openai_messages = [{"role": role_map.get(msg.type, msg.type), "content": msg.content} for msg in
formatted_messages]
print("Formatted messages before conversion:")
print(formatted_messages) # Add pri nt statement here
print("Converted OpenAI messages:")
print(openai_messages) # Add print statement here
return openai_messages
#
� 5. 메인 대화 루프
def chat_loop():
# CLOVA OpenAI compatible 클라이언트
client = OpenAI(
api_key=" K EY ", CLOVA Studio API 키
base_url="https://clovastudio.stream.ntruss.com/v1/openai"
# 대화 히스토리 초기화
history = create_base_prompt()
print(" � 고객센터 챗봇에 오신 것을 환영합니다 . 종료하려면 'exit' 입력
while True:
user_input = input(" n � 사용자 :
if user_input.lower() in ["exit", "quit"]:
print(" � 챗봇을 종료합니다
break
# 대화 기록에 사용자 질문 추가
history.append(("human", user_input))
# 프롬프트 생성 및 메시지 포맷
prompt = build_chat_prompt(histor y)
formatted = prompt.format_messages()
# OpenAI 호환 메시지로 변환 후 API 호출
messages = convert_to_openai_messages(formatted)
ai_response = call_llm(client, messages)
print(f" � 챗봇 : {ai_
# AI 응답도 히스토리에 추가
history.append(("ai", ai_response))
#
� 실행
if __name__ == "__main__":
chat_loop()