from annotated_text import annotated_text import streamlit as st import openai import os # OpenAI API 설정 (환경 변수에서 읽어옴) openai.api_key = os.getenv("OPENAI_API_KEY") # 실제 코드에서 주석 해제 def main(): st.title("Keyword Highlighter") user_text = st.text_area("Please enter your text here:", "") if st.button("Find Keywords"): # few-shot learning을 이용한 task_description # task_description = """You are a helpful assistant that generates annotated text for the st-annotated-text library in Python. Highlight the key terms that are most important in the context of the sentence. Your output should be formatted in the following way: # annotated_text( # "This ", # ("is", ""), # " some ", # ("annotated", ""), # ("text", ""), # " for those of ", # ("you", ""), # " who ", # ("like", ""), # " this sort of ", # ("thing", ""), # ". " # )""" # task_description = """You are a helpful assistant that generates annotated text for the st-annotated-text library in Python. Highlight the key terms that are most important in the context of the sentence, especially focusing on the main subject involved. Your output should be formatted in the following way for text: # annotated_text( # "This ", # ("is", ""), # " some ", # ("annotated", ""), # ("text", ""), # " for those of ", # ("you", ""), # " who ", # ("like", ""), # " this sort of ", # ("thing", ""), # ". " # )""" # task_description = """You are a helpful assistant that generates annotated text for the st-annotated-text library in Python. Your task is to highlight the key terms that are central to the overall topic or theme of the sentence. Your output should be formatted in the following way: # annotated_text( # "This ", # ("is", ""), # " some ", # ("annotated", ""), # ("text", ""), # " for those of ", # ("you", ""), # " who ", # ("like", ""), # " this sort of ", # ("thing", ""), # ". " # )""" # user_prompt = f"Now, please annotate this text: {user_text}" task_description = """You are a helpful assistant that generates annotated text for the st-annotated-text library in Python. Your task is to highlight the key terms that are central to the overall topic or theme of the sentence. Your output should be formatted in the following way: annotated_text( "This ", ("is", ""), " some ", ("annotated", ""), ("text", ""), " for those of ", ("you", ""), " who ", ("like", ""), " this sort of ", ("thing", ""), ". " )""" user_prompt = f"Based on the task description, please annotate the following text by highlighting the key terms central to its topic or theme: {user_text}" messages = [{"role": "system", "content": task_description}, {"role": "user", "content": user_prompt}] response = openai.ChatCompletion.create( model="gpt-3-5-turbo-16k", messages=messages, temperature=0, max_tokens=2500, top_p=1, frequency_penalty=0, presence_penalty=0 ) highlighted_text = response['choices'][0]['message']['content'] # 여기서는 간단하게 exec 함수를 이용해 GPT-3.5-turbo가 생성한 코드를 실행합니다. # 실제 프로덕션 환경에서는 보안 이슈를 고려해야 합니다. exec(highlighted_text) if __name__ == "__main__": main()