1) LLMs_novel_generation

Jacob Kim·2024년 2월 2일
0

Naver Project Week5

목록 보기
9/12
from google.colab import drive
drive.mount('/content/drive')

Novel Generation with LLM

  • Langchain API를 이용해서 소설을 작성해볼 예정입니다.
  • 직접 프롬프트를 제작하고, 이를 Langchain api에 입력해 소설을 출력해봅니다.
!pip install openai langchain
from typing import Dict, List

from langchain import LLMChain
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import ChatPromptTemplate
from pydantic import BaseModel

OpenAI API key

  • key 입력하기
#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

#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

#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

#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

import getpass
import os

os.environ["OPENAI_API_KEY"] = getpass.getpass()
TMP_PATH = "/content/drive/MyDrive/dataset/Novel_generation/single_prompt/prompt_template.txt"

Langchain prompt

  • Lang유저 입력을 이용해서 prompt를 전달해봅시다.hain prompt
class UserRequest(BaseModel):
    genre: str
    characters: List[Dict[str, str]] # 캐릭터 이름, 역할 (주연, 조연)
    idea: str


def read_prompt_template(file_path: str) -> str:
    with open(file_path, "r") as f:
        prompt_template = f.read()

    return prompt_template


def generate_novel(req: UserRequest) -> Dict[str, str]:
    writer_llm = ChatOpenAI(temperature=0.1, max_tokens=500, model="gpt-3.5-turbo")
    writer_prompt_template = ChatPromptTemplate.from_template(
        template=read_prompt_template(TMP_PATH)
    )
    writer_chain = LLMChain(
        llm=writer_llm, prompt=writer_prompt_template, output_key="output"
    )

    result = writer_chain(req.dict())

    return {"results": result["output"]}

Prompt 참고자료 작성

  • txt 파일에 존재하는 템플릿 프롬프트를 동작시킬 프롬프트를 작성합니다.
  • user_data에 의해 작성된 데이터는 이미 생성된 템플릿 프롬프트에 추가되어 처리됩니다.
user_data = {
    "genre": "판타지",
    "characters": [
        {
            "name": "김철수",
            "role": "주인공"
        },
        {
            "name": "이영희",
            "role": "조연"
        }
    ],
    "idea": "날씨가 추워지고 있습니다."
}
request_instance = UserRequest(**user_data)
generate_novel(request_instance)
profile
AI, Information and Communication, Electronics, Computer Science, Bio, Algorithms

0개의 댓글