본문 바로가기
AI 도구

🤖STORM: AI로 논문 작성하기,📈주제만 입력하면 고품질 리포트 3분 완성!

by James AI Explorer 2024. 7. 12.
    728x90

    안녕하세요! 오늘은 대형 언어 모델을 활용해서 제목만 입력하면 인터넷 검색부터 고품질 보고서까지 자동으로 작성해 주는 STORM이라는 AI 도구를 소개해드리겠습니다. STORM(Synthesis of Topic Outlines through Retrieval and Multi-perspective Question Asking, 다각적 질문 생성과 검색을 통한 주제 개요 작성)은 미국 스탠포드 대학에서 만든 시스템으로 인터넷 검색을 기반으로 주제만 입력하면 약 30페이지 분량의 논문 수준 리포트를 작성하는 LLM(Large Language Model) 시스템입니다. 이 블로그에서는 STORM의 개요, 주요 기능 및 동작 원리, 사용 방법에 대해 알아보겠습니다. 

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    STORM 개요

    STORM은 'Synthesis of Topic Outlines through Retrieval and Multi-perspective Question Asking'의 약자로, 웹 페이지 상에서 주제만 입력하면 논문과 같은 리포트를 자동으로 작성해 주는 LLM 시스템입니다. STORM의 목적은 사용자에게 주제에 대한 깊이 있는 탐구를 돕고, 궁극적으로 더 나은 보고서를 작성할 수 있도록 지원하는 것입니다. 

    STORM 개요도

    주요 기능

    STORM은 인터넷 검색을 통해 참고 자료를 수집하고, 이를 바탕으로 주제에 대한 개요를 생성하며, 주제에 대한 다양한 관점을 반영하여 깊이 있는 질문을 생성함으로써 더 포괄적이고 다각적인 연구가 가능합니다. STORM은 엔진을 모듈화 하여 구성되어 있으며, 이는 사용자에게 맞춤형 설정을 할 수 있는 유연성을 제공합니다. 주요 기능은 다음과 같습니다. 

    • 주제 조사 및 다양한 관점 발견: STORM은 관련 위키피디아 내용을 분석하고 목차를 추출하여 주제에 대한 다양한 관점을 식별합니다. 이 단계는 주제를 다양한 각도에서 포괄적으로 다루는 데 중요합니다.
    • 다양한 관점에 따른 질문 생성: STORM은 LLM을 활용하여 관련 주제와 관점의 목록을 생성하고, 이러한 관점을 사용하여 질문 생성 과정을 안내합니다. 이 접근 방식은 주제를 더 깊고 철저하게 다루는 데 도움이 됩니다.
    • 대화 시뮬레이션: STORM은 작성자와 주제 전문가 에이전트 간의 다중 턴 대화를 시뮬레이션합니다. 작성자가 주어진 관점에 따라 질문을 하고, 전문가가 인터넷 검색을 통해 신뢰할 수 있는 출처에 기반한 답변을 제공합니다.
    • 정보 큐레이션 및 개요 작성: 시스템은 에이전트 간의 다양한 대화에서 수집된 정보를 종합하여 포괄적이고 체계적이며, 조직적인 개요를 생성합니다. 
    • 최종 개요 정제: 초기 초안 개요를 정제하여 일관되고 잘 구성된 최종 개요를 제공함으로써 전체 리포트 작성을 위한 기반을 제공합니다. 

    STORM의 동작 개념도

    동작 원리

    위 STORM 개념도는 다음과 같은 동작 순서에 따라 이루어집니다.

    • 1. 주제 조사 (Survey): 주제(t)와 관련된 다양한 관점을 이해하기 위해 초기 정보를 수집합니다.
    • 2. 관점 식별 (Identify Perspectives): 주제를 다각도로 포괄적으로 다루기 위해 수집한 자료를 바탕으로 다양한 관점(p)을 식별합니다. 
    • 3. 읽기 및 질문하기 (Read & Ask): Wikipedia 작성자 에이전트가 주어진 관점을 바탕으로 질문(q)을 생성합니다. 
    • 4. 질문 분할 (Split Queries): 생성된 질문을 세분화하여 검색 준비를 합니다.
    • 5. 검색 및 선별 (Search & Sift): 분할된 질문을 기반으로 신뢰할 수 있는 출처에서 정보를 검색하고 선별합니다. 
    • 6. 합성 (Synthesize): 검색된 정보를 체계적으로 종합하여 질문에 대한 답변(a)을 생성합니다. 
    • 7. 초안 개요 생성 (Direct Generate): 식별된 관점과 수집된 정보를 바탕으로 초안 개요(O_D)를 작성합니다. 
    • 8. 개요 정제 (Refine): 대화(C_0,...,C_n)에서 얻은 정보를 통해 초안 개요를 정제하고 개선합니다. 
    • 최종 개요 (Final Outline): 정제된 개요(O)는 최종적으로 신뢰할 수 있는 출처(R)를 포함하여 완성됩니다. 

    STORM 동작개요

    728x90

    STORM 사용방법

    STORM의 사용방법은 다음과 같습니다.

    1. STORM 웹사이트에 접속한 후, 가입합니다.

    2. 가입이 완료되면 메인화면  Create a New Article 아래 입력창에 주제를 입력하고, 바로 아래 입력창에는 이 리포트를 쓰는 목적에 대해서 "Blog Posting" 등과 같이 간단하게 작성합니다. 

    STORM 메인화면

    3. 주제와 목적 입력 후, 오른쪽 화살표를 클릭하면 관련 프로세스가 시작되고, 잠시 후 인터넷 사이트 브라우징이 시작되며, 프로세스가 완료되면 아래 화면과 같이 리포트가 생성됩니다.

    웹사이트 검색 과정
    완성된 리포트

    완성된 리포트에 포함되어 있는 참조번호를 클릭하면 해당 정보의 온라인 출처를 확인할 수 있습니다. 

    참조번호를 통한 온라인 출처 확인

     

    STORM 로컬 설치(결과 미확인)

    STORM을 로컬에서 실행하기 위해서는 다음 단계를 따라야 하는데요. 저는 api.you.com 사이트의 서버에러로 API Key를 발급받지 못해서 로컬환경에서의 정상동작을 확인하지 못하였습니다. 작성기준 설치 환경은 Windows 11 Pro(23H2), WSL2, 파이썬 버전 3.11, 비주얼 스튜디오 코드(이하 VSC) 1.90.2이며, VSC를 실행하여 "WSL 연결"을 통해 Windows Subsystem for Linux(WSL) 환경에 액세스 하도록 구성하였습니다.

    you.com 서버 에러

    1. 리포지토리 복제 및 필요 패키지 설치: 아래 명령어로 깃허브 저장소를 복제하고, 가상환경 생성 및 활성화 후 의존성을 설치합니다. 

    git clone https://github.com/stanford-oval/storm.git
    cd storm
    python3.11 -m venv myenv
    source myenv/bin/activate
    pip install -r requirements.txt

     

    리포지토리 복제 및 필요 패키지 설치
    가상환경 생성 및 활성화, 의존성 설치

    2. API 키 설정: 루트 디렉토리에 `secrets.toml` 파일을 생성하고 다음 내용을 추가합니다:

    OPENAI_API_KEY="Ollama"
    OPENAI_API_TYPE="openai"
    YDC_API_KEY="api.you.com에서 발급받은 API Key"

    3. lm.py 파일 수정: storm/src/lm.py위치에 있는 lm.py를 VSC에서 열어서 아래화면을 참고해서 수정합니다. llm 모델은 Qwen2를 사용하므로 Ollama 설치 후,  "ollama pull qwen2" 명령어로 모델을 다운로드합니다. 

    class OpenAIModel(dspy.OpenAI):
        """A wrapper class for dspy.OpenAI."""
    
        def __init__(
                self,
                model: str = "qwen2",
                api_key: Optional[str] = None,
                api_provider: Literal["openai", "azure"] = "openai",
                api_base: Optional[str] = "http://localhost:11434/v1",
                model_type: Literal["chat", "text"] = None,
                **kwargs
        ):

    lm.py 파일 수정

    4. run_storm_wiki_gpt.py 파일 수정: storm/examples/run_storm_wiki_gpt.py 경로에 있는  run_storm_wiki_gpt.py 파일을 아래 화면을 참고해서 모델명을 수정합니다. 

    run_storm_wiki_gpt.py 파일 수정

    5. 변수 설정 및 실행:  메인 디렉토리 밑에 output 디렉토리를 만들고 다음과 같이 변수설정 후, 아래 명령어를 입력해서 run_storm_wiki_gpt.py를 실행합니다. 

    mkdir output
    export OUTPUT_DIR="./output"
    python examples/run_storm_wiki_gpt.py \
        --output-dir $OUTPUT_DIR \
        --retriever you \
        --do-research \
        --do-generate-outline \
        --do-generate-article \
        --do-polish-article

     

    추가적인 내용은 아래 사이트를 참고하시면 될 것 같습니다.

    https://github.com/stanford-oval/storm/blob/main/README.md

     

    storm/README.md at main · stanford-oval/storm

    An LLM-powered knowledge curation system that researches a topic and generates a full-length report with citations. - stanford-oval/storm

    github.com

     

    맺음말

    오늘 블로그에서는 대형 언어 모델을 활용하여 사용자가 주제만 입력하면 인터넷 검색부터 고품질 보고서 작성까지 자동으로 처리해 주는 혁신적인 도구, STORM의 개요, 주요 기능 및 동작 원리, 설치 방법에 대해 알아보았습니다. STORM은 주제를 다양한 각도에서 포괄적으로 다루기 위해 다양한 관점을 식별하고, 다각적인 질문을 생성하며, 대화 시뮬레이션을 통해 정보를 큐레이션 하는 등 고도화된 기능을 제공합니다.

     

    STORM을 사용해 본 후기는 다음과 같습니다.

    • 작성된 보고서의 품질이 양호합니다.
    • 결과물 생성시간이 3분으로 매우 빠릅니다.
    • 출처 표시로 좀 더 다양한 정보를 확인할 수 있습니다.

     

    여러분도 STORM을 활용해서 보고서를 작성해 보시면, 시간과 노력을 절약하면서도 높은 수준의 결과물을 얻으실 수 있을 것 같습니다. 오늘 블로그는 여기까지입니다. 저는 다음 시간에 더 유익하고 도움이 되는 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다!

     

    https://fornewchallenge.tistory.com/

     

     

    2024.04.30 - [AI 도구] - LLAMA3 RAG 시스템: AI 어시스턴트로 10초만에 자동 보고서 만들기

     

    LLAMA3 RAG 시스템: AI 어시스턴트로 10초만에 자동 보고서 만들기

    안녕하세요! 오늘은 요즘 가장 인기 있는 언어 모델, LLAMA3로 AI 어시스턴트를 만들어 보겠습니다. 이 앱은 Groq과 Phidata를 이용해서 주어진 웹 사이트나 pdf를 기반으로 "원클릭" 보고서를 작성하고

    fornewchallenge.tistory.com

     

     

    728x90