고객 지원 이메일을 받아서 언어를 감지하고, 영어로 번역하고, 요약하는 프로그램을 만들어보겠습니다. 이 프로그램은 LangChain 라이브러리를 사용하여 체인을 구성하고, OpenAI의 GPT 모델을 활용합니다. 전체 과정을 쉽게 이해할 수 있도록 자세히 설명해드릴게요.
우리는 국제적인 회사를 운영하고 있으며, 전 세계에서 다양한 언어로 작성된 고객 지원 이메일을 받습니다. 우리의 목표는:
이를 위해 LangChain 라이브러리의 SequentialChain을 사용하여 단계별로 처리 과정을 연결할 것입니다.
우선 필요한 라이브러리를 설치해야 합니다.
pip install langchain openai python-dotenv
그리고 OpenAI API 키를 .env
파일에 저장합니다.
.env
파일 내용:OPENAI_API_KEY=your_openai_api_key_here
API 키는 OpenAI 계정에서 발급받을 수 있습니다.
이제 코드의 각 부분을 자세히 살펴보겠습니다.
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain, SequentialChain
import os
from dotenv import load_dotenv
ChatOpenAI
: OpenAI의 채팅 모델을 사용하기 위한 클래스입니다.ChatPromptTemplate
: 프롬프트 템플릿을 만들기 위한 클래스입니다.LLMChain
, SequentialChain
: 체인을 구성하기 위한 클래스입니다.os
, load_dotenv
: 환경 변수를 불러오기 위한 모듈입니다.load_dotenv()
.env
파일에 저장된 OPENAI_API_KEY
를 불러옵니다.
우리는 예제로 스페인어로 작성된 이메일을 사용할 것입니다. 이 이메일은 spanish_customer_email.txt
파일에 저장되어 있다고 가정합니다.
with open('spanish_customer_email.txt', 'r', encoding='utf-8') as file:
spanish_email = file.read()
def translate_and_summarize(email):
# 함수 내용
이 함수는 이메일을 입력으로 받아서 언어 감지, 번역, 요약을 수행하고 결과를 딕셔너리로 반환합니다.
# 언어 감지 프롬프트 템플릿
template1 = """
이메일의 작성 언어를 반환하세요:
{email}
반환 형식은 언어 이름만 적어주세요.
"""
prompt1 = ChatPromptTemplate.from_template(template1)
# 언어 감지 체인
chain_1 = LLMChain(
llm=llm,
prompt=prompt1,
output_key="language"
)
LLMChain
을 사용하여 언어 감지 체인을 만듭니다.# 번역 프롬프트 템플릿
template2 = """
이 이메일을 {language}에서 영어로 번역하세요:
{email}
"""
prompt2 = ChatPromptTemplate.from_template(template2)
# 번역 체인
chain_2 = LLMChain(
llm=llm,
prompt=prompt2,
output_key="translated_email"
)
{language}
)를 이용하여 이메일을 영어로 번역하는 프롬프트를 생성합니다.LLMChain
을 사용하여 번역 체인을 만듭니다.# 요약 프롬프트 템플릿
template3 = """
이 이메일의 내용을 간략하게 요약하세요:
{translated_email}
"""
prompt3 = ChatPromptTemplate.from_template(template3)
# 요약 체인
chain_3 = LLMChain(
llm=llm,
prompt=prompt3,
output_key="summary"
)
{translated_email}
)을 요약하는 프롬프트를 생성합니다.LLMChain
을 사용하여 요약 체인을 만듭니다.# SequentialChain을 사용하여 체인 연결
seq_chain = SequentialChain(
chains=[chain_1, chain_2, chain_3],
input_variables=['email'],
output_variables=['language', 'translated_email', 'summary'],
verbose=True
)
SequentialChain
을 사용하여 각 단계를 순차적으로 연결합니다.verbose=True
로 설정하여 실행 과정을 자세히 볼 수 있습니다.return seq_chain({'email': email})
아래는 위에서 설명한 모든 내용을 포함한 전체 코드입니다.
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain, SequentialChain
import os
from dotenv import load_dotenv
# 환경 변수 로드
load_dotenv()
def translate_and_summarize(email):
"""
이메일의 언어를 감지하고, 영어로 번역하고, 요약합니다.
Args:
email (str): 처리할 이메일 내용.
Returns:
dict: 결과 딕셔너리.
- 'language': 이메일의 원본 언어.
- 'translated_email': 영어로 번역된 이메일.
- 'summary': 번역된 이메일의 요약문.
"""
# OpenAI 모델 초기화
llm = ChatOpenAI(model_name='gpt-3.5-turbo')
# 언어 감지 프롬프트 템플릿
template1 = """
이메일의 작성 언어를 반환하세요:
{email}
반환 형식은 언어 이름만 적어주세요.
"""
prompt1 = ChatPromptTemplate.from_template(template1)
# 언어 감지 체인
chain_1 = LLMChain(
llm=llm,
prompt=prompt1,
output_key="language"
)
# 번역 프롬프트 템플릿
template2 = """
이 이메일을 {language}에서 영어로 번역하세요:
{email}
"""
prompt2 = ChatPromptTemplate.from_template(template2)
# 번역 체인
chain_2 = LLMChain(
llm=llm,
prompt=prompt2,
output_key="translated_email"
)
# 요약 프롬프트 템플릿
template3 = """
이 이메일의 내용을 간략하게 요약하세요:
{translated_email}
"""
prompt3 = ChatPromptTemplate.from_template(template3)
# 요약 체인
chain_3 = LLMChain(
llm=llm,
prompt=prompt3,
output_key="summary"
)
# SequentialChain을 사용하여 체인 연결
seq_chain = SequentialChain(
chains=[chain_1, chain_2, chain_3],
input_variables=['email'],
output_variables=['language', 'translated_email', 'summary'],
verbose=True
)
# 체인 실행 및 결과 반환
return seq_chain({'email': email})
# 이메일 파일 읽기
with open('spanish_customer_email.txt', 'r', encoding='ISO-8859-1') as file:
spanish_email = file.read()
# 함수 실행
result = translate_and_summarize(spanish_email)
# 결과 출력
print("감지된 언어:", result['language'])
print("\n번역된 이메일:\n", result['translated_email'])
print("\n이메일 요약:\n", result['summary'])
프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
감지된 언어: 스페인어
번역된 이메일:
Dear Customer Support,
I recently purchased a product from your online store, but unfortunately, it arrived damaged. I would like to request a replacement or a refund. Please let me know the necessary steps to proceed.
Thank you,
Carlos
이메일 요약:
Carlos는 손상된 상품에 대해 교환 또는 환불을 요청하고 있습니다.
이렇게 해서 고객 지원 이메일을 처리하는 프로그램을 만들어보았습니다. 이 프로그램은 LangChain과 OpenAI의 GPT 모델을 활용하여 언어 감지, 번역, 요약의 과정을 자동화합니다. 실제 업무에서 다양한 언어로 작성된 고객의 문의를 효율적으로 처리하는 데 도움이 될 것입니다.
Asunto: Reporte de Problemas TÈcnicos - Funcionalidad del Panel SAAS
Estimado Equipo de Soporte al Cliente,
Espero que este mensaje les encuentre bien. Les escribo para informarles sobre un problema tÈcnico que he encontrado mientras utilizo su producto de panel SAAS. Como cliente leal, aprecio el valor que su producto aporta a mi negocio, pero actualmente me enfrento a un desafÌo que requiere su experiencia.
Me gustarÌa describir detalladamente el problema que estoy experimentando:
1. Problema Gr·fico: Al iniciar sesiÛn en el panel SAAS, he notado que los gr·ficos y las tablas en la p·gina principal del panel no se renderizan correctamente. Los puntos de datos aparecen distorsionados y algunos elementos se superponen, lo que dificulta la interpretaciÛn precisa de la informaciÛn.
2. Fallo en la FunciÛn de ExportaciÛn: Adem·s, no he podido exportar informes y datos desde el panel. Cada vez que intento exportar un informe en formato CSV o PDF, recibo un mensaje de error que indica que la exportaciÛn ha fallado. Esta funcionalidad es crucial para compartir informaciÛn con mi equipo y partes interesadas externas, por lo que es imperativo que se resuelva r·pidamente.
3. Lentitud en la Carga: Durante la ˙ltima semana, he notado una disminuciÛn significativa en la velocidad de carga del panel SAAS. Las p·ginas tardan un tiempo inusualmente largo en cargarse, lo que afecta mi productividad y genera frustraciÛn. Tengo una conexiÛn a internet confiable, por lo que creo que el problema radica en el panel mismo.
Ya he realizado los siguientes pasos para solucionar el problema:
1. Limpieza de Cache: LimpiÈ la memoria cachÈ y las cookies de mi navegador para asegurarme de que los datos desactualizados no estÈn causando conflictos. Sin embargo, los problemas persisten incluso despuÈs de realizar esta acciÛn.
2. Varios Navegadores: ProbÈ el panel SAAS en diferentes navegadores web (Chrome, Firefox y Safari) para determinar si el problema era especÌfico del navegador. Desafortunadamente, los problemas gr·ficos, los fallos en la exportaciÛn y la lentitud en la carga persistieron en todos los navegadores.
Les solicito amablemente su ayuda para resolver estos problemas, ya que est·n obstaculizando mi capacidad de aprovechar todo el potencial de su panel SAAS. AquÌ est·n las acciones especÌficas que agradecerÌa:
1. SoluciÛn para Problemas Gr·ficos: Por favor, investiguen y corrijan los problemas gr·ficos presentes en la p·gina principal del panel para garantizar una visualizaciÛn precisa de los datos.
2. SoluciÛn para la FunciÛn de ExportaciÛn: Identifiquen y solucionen el problema con la exportaciÛn de informes en formatos CSV y PDF, permitiÈndome compartir datos con mi equipo y partes interesadas de manera fluida.
3. OptimizaciÛn del Rendimiento: Por favor, aborden la lentitud en la carga del panel SAAS para mejorar la experiencia general del usuario y aumentar la productividad.
Entiendo que los problemas tÈcnicos pueden surgir de vez en cuando y aprecio su pronta atenciÛn a este asunto. Si requieren informaciÛn adicional o ayuda de mi parte, no duden en contactarme. Espero su pronta respuesta y una pronta resoluciÛn a estos desafÌos.
Gracias por su comprensiÛn y apoyo.
Atentamente,
MarÌa RodrÌguez
ID de Cliente: 123456789
InformaciÛn de la Cuenta: Empresa Ejemplo S.A.