본문 바로가기

portfolio

python GPT3.5 turbo모델을 사용하여 데이터베이스 객체 조회하기

from openai import OpenAI
client = OpenAI(api_key='')  
  
def find_product(sql_query):
  # 쿼리 실행
  results = [
    {"name": "pen", "color": "blue", "price": 1.99},
    {"name": "pen", "color": "red", "price": 1.78},
  ]
  return results

 
sql_query데이터베이스에서 가격이 2.0미만의 제품을 조회하려고 한다.
 
 
 
1. 먼저 함수객체의 세부정보를 정의한다.

# 함수 객체 세부정보 정의
functions = [
  {
    "name": "find_product",
    "description": "sql 쿼리에서 제품 목록 가져와",
# 함수 인자에 전달 될 매개변수 정의
    "parameters": {
      "type": "object",
      "properties": {
        "sql_query": {
          "type": "string",
          "description": "A SQL query",
        }
      },
      "required": ["sql_query"],
    },
  }
]

 
함수객체의 이름은 find_product함수이고 설명에는 조회하려고 설명을 붙여났다. 파라미터는 sql_query에 타입이 객체이고 속성에 타입은 string을 정의하였다.
 
 
 
2. 조건을 붙여 질문을 해서 제품을 가져오고 싶으면

# 조건을 걸어서 질문
user_question = "2개의 제품중에 가격이 2.00미만인 제품을 골라서 색깔과 가격을 알려줘"
messages = [{"role": "user", "content": user_question}]

# client.chat.completions 엔드포인트를 함수 정의를 사용해 호출
response = client.chat.completions.create(
  model="gpt-3.5-turbo-0613", messages=messages, functions=functions
)

response_message = response.choices[0].message
messages.append(response_message)
print(response_message)

 
최종결과를 호출하기 전 함수를 실행 해보면 

SELECT문과 WHERE조건을 써서 가격 2.00 미만의 제품을 조회하려고한다.

 
 
 
3. 함수 응답을 호출하기 위한 과정 

function_args = json.loads(
  response_message.function_call.arguments
)

 
json.loads() 함수를 사용하여 response_message.function_call.arguments에서 함수객체의 세부정보가 담긴 JSON 형식의 문자열을 파이썬 객체(여기서는 딕셔너리(키-값))로 변환한다. 이는 이전 단계에서 함수에 전달된 인자 sql_query를 파싱하는 과정이다.
 

products = find_product(function_args.get("sql_query"))

 
find_product 함수를 호출하여, 변환된 딕셔너리에서 "sql_query" 키에 해당하는 값을 인자로 사용한다. 이 함수는 데이터베이스에서 제품을 찾는 데 사용되며, 반환된 결과는 products 변수에 저장된다.
 

messages.append(
  {
    "role":"function",
    "name": "function_name",
    "content": json.dumps(products)
  }
)

 
함수의 결과(products)를 JSON 문자열로 변환하여 messages 리스트에 새 메시지로 추가한다. 이 메시지에는 역할(role), 함수 이름(name), 그리고 함수의 결과를 담은 내용(content)이 포함된다. 
 

최종결과를 출력하면 조건에 맞는 질문에 답을 하고 있다.

 
 
참고한 책 
 
https://www.yes24.com/Product/Goods/124201115

GPT-4를 활용한 인공지능 앱 개발 - 예스24

AI 전문 지식 없이 코드 몇 줄로 만들어보는 LLM 기반 앱GPT-1부터 GPT-4 터보에 이르기까지, 언어 모델은 놀랍게 진화하고 있다. 이 책에서는 LLM의 흥미로운 역사와 핵심 요소를 짚어보고 간단한 코

www.yes24.com