본문 바로가기
데이터&AI/LLM

지금시간 맞추는 GPT 만들기 (feat. function calling)

by 일등박사 2024. 5. 30.
728x90

2024.05.28 - [데이터&AI/LLM] - LLM 에이전트(llm agent) 란 무엇일까?- 코드로 알아보기 (feat. prompt engineering)

 

LLM 에이전트(llm agent) 란 무엇일까?- 코드로 알아보기 (feat. prompt engineering)

https://www.etnews.com/20240501000118 AI 에이전트 시대 열린다…단순 답변 넘어 '일상의 동반자'로인공지능(AI)이 챗봇을 넘어 기차표를 예매하고 레스토랑을 예약해주는 ‘AI 에이전트 시대’가 열린다.

drfirst.tistory.com

 

 

LLM Agent, function calling, tool 등 GPT를 활용한 다양한 기술들이 개발되고있는데요!!

오늘은 이 function calling 기능을 활용하여

현재시간을 대답하는 GPT를 만들어보고자합니다!!

 

chatgpt3.5에서는 시간을 알 수없습니다

 

0. 관련 모듈 및 객체 로딩

필요한 패키지와 llm 객채를 로딩합니다!

import openai
import datetime
client = openai.OpenAI(api_key = '{내key}')

 

 

1., 함수 만들기

지금 시간을 알려주는 간단한 함수를 만들어봅니다! 함수명은 time_now 라고합니다!

def time_now():
    return datetime.datetime.now().strftime('%Y년%m월%d일 %H시%M분%S초')

 

2. 함수에 대한 설명자료만들기!!

이 함수가 어떤 함수인지, gpt가 이해할 수 있도록 설명자료를 만듭니다!!

openai에서 제공하는 형식에 맞춰줍니다!

functions = [
    {
        "name": "time_now",
        "description": "현재시각을 알려줍니다.",
        "parameters": {
            "type": "object",
            "properties": {
            },
            "required": [],
        },
    }
]

 

3.  gpt호출할때, 함수정보를 함께 넣기!!

  > 2에서 진행했던 함수정보를 함께 넣어 GPT를 호출합니다!

def chat(query):
    completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": query}],
    functions=functions,  ## 요부분!!!!
    )
    message =  completion.choices[0].message
    return message

 

그럼 아래와 같이 질문에 따라 함수를 호출할지 말지 GPT가 정해줍니다!!

질문을 보고 function call을 할지 말지 정합니다!!

 

4,최종 답변하도록 GPT호출하기!!

time_now = globals()[message_res.function_call.name]()
time_now


if message_res.function_call != None:
    price_response = client.chat.completions.create(
    model="gpt-3.5-turbo-0613",
    messages=[
        {"role": "system", "content": "너는 시간을 알려주는 비서야"},
        {"role": "system", "content": f"현재시간은 {time_now}입니다"},
        {"role": "user", "content":query}
    ],
)

    print(price_response.choices[0].message.content)
else:
    print('잘못된 질문입니다. 시간을 물어봐주세요')

이제, 실제 결과를 호출해서 다시 GPT에 보내 답을 구합니다!!

 

최종결론!!

GPT가  사람의 질문을 받고!!

function 에 해당하는지를 판단하고!@

해당한다면 함수의 결과갑을 가지고 답을합니다!!

이렇게한다면 GPT를 통해서도 시간을 잘 알수있찌요~~

 

query = "시방 몇시더냐????"
message_res = chat(query)
message_res

if message_res.function_call != None:
    price_response = client.chat.completions.create(
    model="gpt-3.5-turbo-0613",
    messages=[
        {"role": "system", "content": "너는 시간을 알려주는 비서야"},
        {"role": "system", "content": f"현재시간은 {time_now}입니다"},
        {"role": "user", "content":query}
    ],
)

    print(price_response.choices[0].message.content)
else:
    print('잘못된 질문입니다. 시간을 물어봐주세요')

 

 

 

감사합니다.

 

 

728x90

댓글