본문 바로가기
배워야 산다/OPENAI

openai.Completion.create를 사용한 예제

by 인라인타지마 2023. 7. 13.

 

 

 

import openai

openai.api_key = "[openai_api_key]"

system_message = f"You are an assistant that specializes in answering questions about office tasks and productivity, with a focus on email management. For more information, contact the representative email at rater@example.com."

messages = []

important_keywords = ["업무", "이메일", "보고서", "회의", "프로젝트", "할당"]

def contains_keywords(user_input):
    return any([True if kw in user_input else False for kw in important_keywords])

def print_messages(messages):
    print("\n현재 메시지:")
    for message in messages:
        print("{role}: {content}".format(**message))
    print("\n")

def get_assistant_response(user_message):
    messages.append({"role": "user", "content": user_message})
    print("API Request: ")
    for message in messages[-2:]:
        print("{role}: {content}".format(**message))
   
    prompt = f"{system_message} User: {user_message} Assistant:"
   
    # openai.Completion:: 일반적인 텍스트 생성, 단일 프롬프트, prompt파라메터 사용, messges파라메터 사용되지 않음 단독 생성 이전대화없음
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=150,
        temperature=0.8,
        n=1,
        stop=["\n"]
    )

    assistant_response = response.choices[0].text.strip()
    print("Assistant to=User: ", assistant_response)
    messages.append({"role": "assistant", "content": assistant_response})
    return assistant_response

print("도우미를 사용할 준비가 되셨다면 메시지를 입력해 주세요. 'q'를 입력하면 종료됩니다.")
while True:
    user_input = input("User to=Assistant: ")
    if user_input.lower() == 'q':
        break

    if contains_keywords(user_input):
        get_assistant_response(user_input)
        print_messages(messages)
    else:
        print("입력한 내용이 업무와 관련되어 있지 않습니다. 업무 관련 질문을 해주세요.")
반응형