LLM기반 IoT 제어 - OpenAI 함수호출과 스위치봇 API 연결하기
# Prompts Azure OpenAI with a request and synthesizes the response.
def ask_openai(llm_model, messages, user_message, functions = ''):
proc_messages = messages
if user_message != '':
proc_messages.append({"role": "user", "content": user_message})
if functions == '':
# Ask Azure OpenAI
response = openai.ChatCompletion.create(model=llm_model, messages=proc_messages, temperature = 1.0)
else:
response = openai.ChatCompletion.create(model=llm_model, messages=proc_messages, functions=functions, function_call="auto")
response_message = response['choices'][0]['message']
if response_message.get("function_call"):
# Step 3: call the function
# Note: the JSON response may not always be valid; be sure to handle errors
available_functions = {
"get_current_temperature": get_current_temperature,
"get_current_humidity": get_current_humidity,
"turn_on_light": turn_on_light,
"turn_off_light": turn_off_light
} # only one function in this example, but you can have multiple
function_name = response_message["function_call"]["name"]
fuction_to_call = available_functions[function_name]
function_args = json.loads(response_message["function_call"]["arguments"])
if 'user_prompt' in function_args:
function_response = fuction_to_call(function_args.get('user_prompt'))
else:
function_response = fuction_to_call()
proc_messages.append(response_message) # extend conversation with assistant's reply
proc_messages.append(
{
"role": "function",
"name": function_name,
"content": function_response,
}
) # extend conversation with function response
second_response = openai.ChatCompletion.create(
model=llm_model,
messages=messages,
) # get a new response from GPT where it can see the function response
assistant_message = second_response['choices'][0]['message']['content']
else:
assistant_message = response_message['content']
text = assistant_message.replace('\n', ' ').replace(' .', '.').strip()
print(Fore.GREEN + text + Style.RESET_ALL)
proc_messages.append({"role": "assistant", "content": assistant_message})
return proc_messages, text
책 소개
[추천사]
- 하용호님, 카카오 데이터사이언티스트 - 뜬구름같은 딥러닝 이론을 블록이라는 손에 잡히는 실체로 만져가며 알 수 있게 하고, 구현의 어려움은 케라스라는 시를 읽듯이 읽어내려 갈 수 있는 라이브러리로 풀어준다.
- 이부일님, (주)인사아트마이닝 대표 - 여행에서도 좋은 가이드가 있으면 여행지에 대한 깊은 이해로 여행이 풍성해지듯이 이 책은 딥러닝이라는 분야를 여행할 사람들에 가장 훌륭한 가이드가 되리라고 자부할 수 있다. 이 책을 통하여 딥러닝에 대해 보지 못했던 것들이 보이고, 듣지 못했던 것들이 들리고, 말하지 못했던 것들이 말해지는 경험을 하게 될 것이다.
- 이활석님, 네이버 클로바팀 - 레고 블럭에 비유하여 누구나 이해할 수 있게 쉽게 설명해 놓은 이 책은 딥러닝의 입문 도서로서 제 역할을 다 하리라 믿습니다.
- 김진중님, 야놀자 Head of STL - 복잡했던 머릿속이 맑고 깨끗해지는 효과가 있습니다.
- 이태영님, 신한은행 디지털 전략부 AI LAB - 기존의 텐서플로우를 활용했던 분들에게 바라볼 수 있는 관점의 전환점을 줄 수 있는 Mild Stone과 같은 책이다.
- 전태균님, 쎄트렉아이 - 케라스의 특징인 단순함, 확장성, 재사용성을 눈으로 쉽게 보여주기 위해 친절하게 정리된 내용이라 생각합니다.
- 유재준님, 카이스트 - 바로 적용해보고 싶지만 어디부터 시작할지 모를 때 최선의 선택입니다.