랭체인으로 코드 문제 테스트케이스 생성기 만들기_241007

배경 및 목적

코딩 문제를 도메인에 맞게 제출해주고, 15분~1시간 정도의 시간을 재 주는 웹 서비스를 만드려고 함.

참고 자료

테디노트 님의 Langchain 플레이리스트

https://www.youtube.com/@teddynote/playlists

활용 툴

Langchain

Langsmith

ChatGPT

CursorAI

Streamlit

실행 과정

GPTs로 분야를 주면 이에 맞는 코드 문제와 테스트 케이스를 주는 POC를 수행함

한국사이트 스크린샷
한국어가 포함된 한국 웹사이트의 스크린샷

streamlit으로 프로토타이핑을 시도했으나, 체인 간 메시지 공유가 안 되는 상태임 (프롬프트, RunnableWithMessageHistory 사용에 문제가 있을 것으로 생각됨

algoboom - 스크린샷 썸네일

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

연동법이 상이해 보임.

코드 편집기의 스크린샷

웹 브라우저의 CSS 파일 스크린샷

chain 순서를 뒤바꿀 수 없는 지 확인이 필요함 (prompt를 마지막에 엮었더니 에러 노출

웹 브라우저의 CSS 파일 스크린샷
WordPress 페이지의 스크린샷

결과 및 인사이트

langchain이 현재 0.3 버전인데, ChatGPT와 Claude 모두 langchain 0.1의 코드를 만드는 것을 확인함.

코드 문제가 있는 Github repo가 있는데, 이를 Retrieve해볼 수 있는지 추가 확인이 필요함

어두운 방에 있는 코드 편집기의 스크린샷

Cursor AI Composer로 유닛 테스트를 만들 수 있지만, langchain 코드 태반이 외부 라이브러리이고 아직 이렇다할 비즈니스 로직이 없어 가능성만 살펴봄

👉 이 게시글도 읽어보세요