반응형
function_call이란?
function_call은 ChatGPT API가 사전 정의된 함수와 상호 작용하도록 하는 기능입니다. 개발자는 실제 세계의 작업이나 데이터 검색 작업을 나타내는 함수를 정의합니다. 모델은 대화에서 적절한 상황을 발견하면 다음과 같은 작업을 수행할 수 있습니다.
- 프롬프트 또는 대화 기록에 따라 function_call의 필요성을 인식합니다.
- 함수에 필요한 인수를 나타내는 JSON을 생성합니다.
- 이 JSON을 애플리케이션 코드에 전달하여 함수를 실행합니다.
- 함수 결과를 대화 흐름에 다시 통합합니다.
function_call의 장점
- 구조화된 데이터 추출: extract_data(name, age)와 같은 함수를 사용하여 텍스트에서 특정 데이터를 추출합니다.
- API 통합: send_email(to, subject, body)와 같은 함수를 통해 외부 API에 연결합니다.
- 실제 세계 작업: purchase_item(product_id, quantity)와 같은 함수를 사용하여 (사용자 확인 후) 실제 세계 작업을 트리거합니다.
- 향상된 상호 작용: 더욱 매력적이고 역동적인 챗봇 상호 작용을 만듭니다.
예시
messages = [{"role": "user", "content": "대한민국, 미국, 중국"}]
function_call = [
{
"type": "function",
"function": {
"name": "get_country_data",
"description": "주어진 문자열에서 나라를 추출해",
"parameters": {
"type" : "object",
"properties" : {
"peoples" : {"type": "string", "description": "해당 국가의 인구수를 알려줘"},
"president" : {"type": "string", "description": "해당 국가의 대통령을 알려줘"}
},
"required" : ["peoples", "president"]
},
},
},
]
client = OpenAI(api_key="본인의 API_KEY를 입력하세요")
response = client.chat.completions.create(
model="gpt-3.5-turbo-1106",
messages=messages,
tools=function_call,
tool_choice="auto",
)
message = response.choices[0].message
tool_calls = message.tool_calls
if tool_calls :
for tool_call in tool_calls :
print(tool_call.function.arguments)
출력 결과
추가 고려 사항
- 특히 민감한 데이터나 작업을 처리할 때는 함수 보안을 확보해야 합니다.
- 모델이 사용자 확인 없이 의도하지 않은 작업을 트리거하지 못하도록 안전 장치를 구현합니다.
- 최적의 결과를 얻으려면 함수와 대화 프롬프트를 지속적으로 실험하고 개선합니다.
'파이썬' 카테고리의 다른 글
SQLAlchemy: 데이터베이스 툴킷 (3) | 2024.11.13 |
---|---|
ChatGPT API를 활용한 똑똑한 채팅봇 만들기: OpenAI (1) | 2024.02.09 |
크롤링 요소 검색 비교 : Selenium vs BeautifulSoup (0) | 2024.02.02 |