71 lines
1.7 KiB
Python
71 lines
1.7 KiB
Python
from dotenv import load_dotenv
|
|
import os
|
|
|
|
from ibm_watsonx_ai import APIClient
|
|
from ibm_watsonx_ai import Credentials
|
|
from ibm_watsonx_ai.foundation_models import ModelInference
|
|
import gradio as gr
|
|
|
|
import logging
|
|
|
|
# .env 내용 가져오기
|
|
load_dotenv()
|
|
|
|
apikey = os.getenv("WATSONX_API_KEY")
|
|
project_id = os.getenv("WATSONX_PROJECT_ID")
|
|
watsonx_ai_url = os.getenv("WATSONX_URL")
|
|
|
|
credentials = Credentials(
|
|
url = f"{watsonx_ai_url}",
|
|
api_key = f"{apikey}",
|
|
)
|
|
client = APIClient(credentials)
|
|
|
|
model = ModelInference(
|
|
model_id="ibm/granite-4-h-small",
|
|
api_client=client,
|
|
project_id=f"{project_id}",
|
|
params = {
|
|
"max_tokens": 1000
|
|
}
|
|
)
|
|
|
|
|
|
def interview_text(genre):
|
|
|
|
|
|
system_prompt = """
|
|
인터뷰를 한다고 생각하고 대상의 주제를 가지고 일단 핵심 내용을 정리하고 인터뷰 질문을 생성해줘.
|
|
"""
|
|
|
|
|
|
user_prompt=f"""
|
|
아래 내용 참고해서
|
|
1. 장르 특징 5줄 정리
|
|
2. 인터뷰 질문 8개 작성해줘
|
|
- genre : {genre}
|
|
"""
|
|
|
|
print(genre)
|
|
|
|
messages = [
|
|
# 시스템 프롬프트
|
|
{"role" : "system", "content" : system_prompt},
|
|
{"role" : "user", "content" : user_prompt},
|
|
]
|
|
|
|
generated_response = model.chat(messages=messages)
|
|
return generated_response['choices'][0]['message']['content']
|
|
|
|
demo = gr.Interface(
|
|
fn=interview_text,
|
|
inputs=[gr.Text(label = "genre"),
|
|
|
|
],
|
|
|
|
outputs=[gr.Markdown()],
|
|
title="인터뷰 질문 생성 프로그램",
|
|
description="질문 생성"
|
|
)
|
|
|
|
demo.launch() |