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

openai.ChatCompletion.create를 사용한 예제

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

 

 

 

 

import openai

openai.api_key = "[openai_api_key]"

messages = [
    {
        "role": "system",
        "content": "You are an assistant that specializes in answering questions about office tasks and productivity, with a focus on email management. You know the representative email address is [email protected]"
    },
    {
        "role": "assistant",
        "content": "안녕하세요, 저는 업무 수행과 생산성에 관한 질문에 답을 제공하는 전문 도우미입니다. 특히 이메일 관리와 관련된 질문을 전문으로 다루고 있습니다. 대표 이메일 주소는 [email protected] 입니다. 업무와 관련된 궁금한 사항이 있으면 언제든지 물어보세요!"
    }
]


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))
   
    # ChatCompletion:: 대화형 채팅으로 시작 messages파라메터로 대화 이력 객체를 배열로 전달, 여러 채팅 이력 prompt 사용되지 않음
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages,
        max_tokens=150,
        temperature=0.8,
        n=1,
        stop=[".", "!", "?"]
    )

    assistant_response = response.choices[0].message.content
    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("입력한 내용이 업무와 관련되어 있지 않습니다. 업무 관련 질문을 해주세요.")
반응형