배경 및 목적
코딩 문제를 도메인에 맞게 제출해주고, 15분~1시간 정도의 시간을 재 주는 웹 서비스를 만드려고 함.
참고 자료
테디노트 님의 Langchain 플레이리스트
https://www.youtube.com/@teddynote/playlists
활용 툴
Langchain
Langsmith
ChatGPT
CursorAI
Streamlit
실행 과정
GPTs로 분야를 주면 이에 맞는 코드 문제와 테스트 케이스를 주는 POC를 수행함
streamlit으로 프로토타이핑을 시도했으나, 체인 간 메시지 공유가 안 되는 상태임 (프롬프트, RunnableWithMessageHistory
사용에 문제가 있을 것으로 생각됨
def generate_question(quiz_domain: str, estimated_time: str, session_id: str):
question_prompt = ChatPromptTemplate.from_messages([
("system", """다음 조건을 만족하는 코딩 문제를 하나 제안해 주세요.
도메인: "{quiz_domain}"
예상시간: "{estimated_time}"
요청이 있기 전까지는 예시 코드 답안을 제공하지 마세요.
문제: """),
MessagesPlaceholder(variable_name="history"),
])
question_stream = chatsession | question_prompt
response = question_stream.invoke(
input={"quiz_domain": quiz_domain, "estimated_time": estimated_time},
config={"configurable": {"session_id": session_id}},
)
return response.content
def generate_answer(session_id: str):
answer_prompt = ChatPromptTemplate.from_messages([
("system", """위 문제의 답을 제공해주세요."""),
MessagesPlaceholder(variable_name="history"),
])
answer_stream = chatsession | answer_prompt
response = answer_stream.invoke(
input={},
config={"configurable": {"session_id": session_id}},
)
return response.content
langsmith 연동을 시도해보았는데, langchain_openai.ChatOpenAI
와 튜토리얼의 openai.OpenAI
연동법이 상이해 보임.
chain 순서를 뒤바꿀 수 없는 지 확인이 필요함 (prompt를 마지막에 엮었더니 에러 노출
결과 및 인사이트
langchain이 현재 0.3 버전인데, ChatGPT와 Claude 모두 langchain 0.1의 코드를 만드는 것을 확인함.
코드 문제가 있는 Github repo가 있는데, 이를 Retrieve해볼 수 있는지 추가 확인이 필요함
Cursor AI Composer로 유닛 테스트를 만들 수 있지만, langchain 코드 태반이 외부 라이브러리이고 아직 이렇다할 비즈니스 로직이 없어 가능성만 살펴봄