본문 바로가기
카테고리 없음

나만의 인공지능 만들기 (OpenAI Assistant API) 설명

by Sjungwon 2024. 8. 1.

https://youtu.be/-Wne4a-8RlY?si=fraB1K9IN-NHxrgI

https://youtu.be/kKhWkG5Di5s?si=wuQIovMn8Sj1NOxn

 

 

해당 영상들을 참조 하였습니다.

 

쉽게 인공지능을 만들 수 있는 어시스턴트 API를 알아보자.

 

이렇게 생겼으며 

 

이렇게 Assistant 와 Tread 라는게 있다. 

 

그냥 쉽게 Tread는 기본 배경이라고 생각하면 쉽다. 

이 Thread (카톡 대화방) 안에는 1. 시스템 메세지  2. 사용자 메세지 3. 어시스턴트 메세지가 쌓인다. 

 

1. 시스템 메세지는 로봇이 대답할 떄 참고할 전역조건 이다. ex) 우리 수학 관련 이야기 할 껀데 수학 관련 답변 상세히 해줘. 라는 것이다. 여기서 수학 이라는 단어와 관련 답변을 시작해야 겠군 하고 로봇이 이해를 한다. 

2. 사용자의 질문이 User 메세지로 들어간다.

3. AI가 답변한 내용이 Aissistant에 들어간다. Assistant가 정해진 대화 Thread를 가지고 실행하게 된다. 

-> 질문을 받으면 실시간 답변 형식

 

마지막 Run 객체가 필요한 이유는 우리가 대화 쓰레드 안에다가 메세지를 쭉 넣는데 메세지를 차곡차곡 쌓은 다음에 대화를 나누며 차곡차곡 이 Run 전까지는 Message 들이 Queu (큐) 상태가 된다, 이 모든 과정은 비동기 (동시에 일어나지 않는다) 방식이다. 

 

Thread에 메세지를 차곡차곡 쌓고 그러다가 내가 필요한 시점이 되면 Run이라는 객체를 만들어서 실행을 하게 되면 쌓인 메세지들이 전송이 되면서 답변을 받게 되는 구조 

그래서 Run 은 실행 시점은 관리하거나 실행 단계를 추적하는 요소로 쓰인다. 

 

Assistant = client.beta.assistants.create (

name = 로봇이름

instruction = 어떤 배경인지

model = 챗지피티 몇 버전인지

)

 

대략 이렇게 만들면 -> assistant 대시보드에 오면 내가 정한 로봇 이름과 애 (로봇)가 생긴다. 그러고 나서 ID 값을 확인해야 한다. 여기서도 확인 할 수 있다. 이 ID를 Assistant_ID = assistat.id 에 저장까지 해준다. 

 

--------------------------여기 까지가 Assistat---------------------------- 

 

이제 <Thread> 

thread = client.beta.threads.create ()

이렇게 새로 쓰레드가 만들어진다. 

이 카톡방에 메세지 추가 한다. 

 

message = client.beta.threads.message.create 해서 메세지를 추가한다. 

 

ex) message = client.beta.threads.message.create (

thread_id = thread.id,

role = "user" ,

content = "다음의 방정식을 풀고 싶습니다.

'3x + 11 = 14' ,  수학 도와주술 있나요?"

)

 

뭐 이런 방식 

 

thread.id = 메세지가 어디에 귀속된 아이디어인지 쓰레드 아이디를 넣어야 한다. 

role = "user" 

우리가 질문을 넣을거라서 user message를 넣는다.

 

마지막 콘텐츠에 content = 에 메세지를 만들면 된다. 

 

만약 수학 관련 질문이 들어오면 어디에 매핑하기 좋냐면, 수학과 관련된 thread에 매핑 시키는게 좋다,

Thread ID 쓰레드 매핑은 할 때 각자 맞는것에 매핑 해야한다.

 

어떤 쓰레드에 메세지를 귀속 시킬지 'thread_id = ' 에서 설정한다.

* 하나의 쓰레드에는 하나의 주제 만 갖는 것이 좋기 때문이다.

 

Run 을 할 때는 1) 어떤 Assistant를 부를꺼야? 2) 어떤 Thread를 부를꺼야? 가 Run에 지정해야한다.

 

Thread 해놓으면 내가 원하는 시점에 Run 해서 불러줄 수 있고 Status는 상태 관리 기능을 한다.

while run status == " queued " or run statstatus == "in-progress":

 

 

 

 

 

/////

 

 

/////

 

 

한 마디로 

 Assistant -> 로봇을 만들자 ! 어떤 로봇? instruct : 캐릭터 입히기 (를 해야함)

Thread 는 카톡방 (이 방 안에는 수 많은 대화가 오고가는데)

이  대화 하나하나가 (방의 대화) 메세지의 종류는 크게 3가지로 나뉘게 된다. 아까 봤던 시스템, 사용자, 어시스턴트 이 메세지들의 특징은 Assistant 가 대답을 할 때 참고할만한 전역조건이다.

 

이를 통해서 AI 와 언리얼을 합치면

 

언리얼 : 파이썬에서 전송되는 OSC를 받아 각각 이송

파이썬 : Open AI 서버에서 Assistant API 라는게 있는데 이걸 이용해서 연결

 

API 의 Overview 에 들어가서 단위 RUN 시킴' 

그러면 function calling 됨 그럼  calling 됨. 즉,  Assistant API 는 Thead를 생성하고 function calling 를 신호 호출하는데 쓰임.