데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      OpenAI API Beta Feature: Assistant API

      긴꼬리 24.11.21
      3,521 5 2
      DEVOTEE 요약
      OpenAI는 개발자가 자체 AI 어시스턴트를 애플리케이션에 통합할 수 있는 Assistant API를 출시하였습니다. 이 API는 Code Interpreter, File Search, Function Calling 등의 기능을 통해 사용자 요청에 대한 맞춤형 응답을 제공합니다. 이를 통해 다양한 분야에서 개발자들이 AI 어시스턴트를 구축하고, 복잡한 문제를 해결하는 데 도움을 줄 수 있습니다.
      DEVOTEE 추천 블로그

      OpenAI는 개발자들이 자신만의 AI 어시스턴트를 애플리케이션에 통합할 수 있도록 지원하는 Assistant API를 새롭게 선보였습니다.

      이 API는 명확한 지침, 모델, 도구, 파일 등을 활용하여 사용자 요청에 대한 지능적이고 맞춤형 응답을 제공합니다.

      Assistant API는 현재 다음과 같은 주요 기능을 지원합니다: Code Interpreter, File Search, Function Calling.


      다음 그림은 Assistant API를 설명하는 그림입니다.

      image.png

      Assistant (어시스턴트)

      정의: 특정 목적에 맞게 설계된 AI로, OpenAI의 모델과 다양한 도구를 호출합니다.

      역할: Assistant는 특정한 기능(예: 개인 금융 관리)을 수행하도록 미리 설정된 지침과 도구를 사용하여 사용자 요청에 응답합니다.

      Thread

      정의: Assistant와 사용자 간의 대화 세션을 나타냅니다.

      역할: Thread는 Message를 저장하고, 대화가 모델의 컨텍스트 길이를 초과하지 않도록 자동으로 잘라냅니다.

      • 예: "은퇴 계획에 대한 대화"라는 주제로 Thread가 생성됩니다.*

      Message (메시지)

      정의: Assistant 또는 사용자가 생성한 텍스트, 이미지, 파일 등의 콘텐츠입니다.

      역할: 메시지는 Thread에 저장되며, 대화의 흐름을 기록합니다.

      • 예: 사용자의 메시지: "내 은퇴 계획에 얼마나 기여해야 하나요?"

        Assistant의 메시지: "매년 $478를 기여하는 것이 적합합니다."*

      Run

      정의: 특정 스레드에서 Assistant가 도구와 모델을 호출하여 작업을 수행하는 인스턴스.

      역할: Assistant가 실행 중 모델을 호출하거나 도구를 사용하는 일련의 과정입니다.

      • 예: "코드 인터프리터를 사용하여 사용자의 질문을 처리하고 메시지를 생성."

      Run Step

      정의: Run의 일부로, Assistant가 작업을 수행하는 세부 단계.

      역할: Assistant가 도구를 호출하거나 메시지를 생성하는 등의 구체적인 작업을 보여줍니다. Run Step을 통해 Assistant 작업 과정을 자세히 확인할 수 있습니다.


      다음으로는 Assistant API의 개념과 주요 기능, 그리고 실질적인 활용 방법에 대해 살펴보겠습니다.


      1. Assistant API란 무엇인가?

      Assistant API는 OpenAI 모델을 활용하여 맞춤형 AI Assistant를 구축할 수 있는 도구입니다.

      Assistant는 특정 목적에 따라 사용자 요청에 응답하며, 다양한 도구와 외부 데이터를 활용해 복잡한 작업을 수행할 수 있습니다.

      Assistant API의 주요 특징

      맞춤형 지침 제공: Assistant의 성격과 기능을 특정 지침에 맞게 조정할 수 있습니다.

      다양한 도구 지원: OpenAI가 제공하는 기본 도구(Code Interpreter, File Search)와 사용자가 직접 만든 도구(Function Calling)를 병렬로 활용할 수 있습니다.

      Persistent Threads: Assistant와 사용자가 대화 내역을 저장하고 관리할 수 있는 영구 스레드를 제공합니다. 스레드는 대화 기록을 보존하고 Context 길이를 초과하지 않도록 자동으로 관리합니다.

      파일 관리 및 생성: 다양한 형식의 파일(PDF, DOCX 등)을 Assistant와 공유하거나 Assistant가 직접 파일(예: 스프레드시트)을 생성할 수도 있습니다.


      2. 주요 기능

      Assistant API는 세 가지 주요 도구를 통해 사용자의 요구를 충족시킵니다.

      2.1. File Search

      File Search는 Assistant가 외부 문서 데이터를 검색하고 처리할 수 있도록 돕는 도구로, RAG를 기반으로 합니다.

      이 도구는 다음과 같은 과정을 거쳐 작동합니다.

      Step #1: File Search 활성화

      from openai import OpenAI
      
      client = OpenAI()
      
      assistant = client.beta.assistants.create(
          name="Document Analysis Assistant",
          instructions="Use File Search to answer user queries based on uploaded documents.",
          model="gpt-4o",
          tools=[{"type": "file_search"}],
      )

      Step 2: 파일 업로드 및 Vector Store 생성

      # 벡터 스토어 생성 및 파일 업로드
      vector_store = client.beta.vector_stores.create(name="Company Docs")
      
      file_paths = ["docs/company_policy.pdf", "docs/employee_handbook.txt"]
      file_streams = [open(path, "rb") for path in file_paths]
      
      file_batch = client.beta.vector_stores.file_batches.upload_and_poll(
          vector_store_id=vector_store.id, files=file_streams
      )
      print(file_batch.status)

      Step 3: Assistant와 Vector Store 연결

      assistant = client.beta.assistants.update(
          assistant_id=assistant.id,
          tool_resources={"file_search": {"vector_store_ids": [vector_store.id]}},
      )

      File Search 예시

      ex1) 문서 기반 질문 응답 : 사용자가 업로드한 문서를 기반으로 질문에 답합니다.

      예) 기업의 재무 보고서를 업로드하고, 주요 재무 지표에 대해 질문.

      질문: "2023년 10월 말 기준 Apple의 발행 주식 수는 몇 주인가요?"
      작동 방식:
      1. 사용자는 aapl-10k.pdf 파일을 업로드합니다.
      2. Assistant는 파일에서 관련 데이터를 검색합니다.
      3. *"Apple의 발행 주식 수는 23억 주입니다."*와 같은 답변을 제공합니다.
      ex2) 계약서 분석 및 조항 검색

      사용자가 업로드한 문서를 기반으로 질문에 답합니다.

      예: 법률 문서나 계약서에서 특정 조항을 빠르게 검색합니다.

      질문 : "계약 해지 조항의 세부 내용을 알려줘."
      작동방식:
      1. 계약서를 업로드합니다.
      2. file_search는 "해지" 키워드와 관련된 청크를 검색합니다.
      3. Assistant는 검색된 내용을 요약하여 사용자에게 제공합니다.

      2.2. Code Interpreter

      Code Interpreter는 Python 코드를 실행하여 데이터를 분석하거나 계산을 처리하는 도구입니다.

      ex)

      • 데이터 분석: CSV 파일을 업로드하여 매출 데이터를 분석하고 시각화합니다.

      • 이미지 처리: 업로드된 이미지에서 특정 객체를 탐지하거나 변환합니다.

        상세 예제)

      1. 사용자 요청: "이 이미지에서 사람의 얼굴을 감지하고 표시해줘."
      2. 이미지 파일 업로드
      3. Code 자동 생성 및 실행
      ==============================================================================
      import cv2
      
      # 이미지 읽기
      image = cv2.imread("image.jpg")
      gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
      
      # 얼굴 탐지
      face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
      faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
      
      # 얼굴에 사각형 표시
      for (x, y, w, h) in faces:
          cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)
      
      # 결과 이미지 저장
      cv2.imwrite("output.jpg", image)
      ==============================================================================
      4. 코드 구동 & 결과 반환
      5. 추가 질문 가능.
      • 수학적 계산: 복잡한 수학 문제를 해결하거나 간단한 머신러닝 모델을 구축합니다.

      2.3. Function Calling

      Function Calling은 사용자가 정의한 함수를 호출하여 외부 시스템과의 연동 및 복잡한 작업 처리를 가능하게 합니다.

      ex)

      • 실시간 데이터 조회: 외부 API를 호출해 최신 환율 정보를 제공합니다.

      • 주문 상태 확인: 사용자의 요청에 따라 주문 내역을 검색하고 상태를 반환합니다.

        상세 예제)

      1. 사용자 요청: "내 주문 번호 #1234의 상태를 확인해줘."
      2. 사용자 요청 분석: Assistant는 요청에서 주문 번호를 추출합니다. (#1234)
      3. Function 호출: get_order_status(미리 등록된 함수) 함수를 호출하여 주문 정보를 검색합니다.
      ==============================================================================
      def get_order_status(order_id: str) -> dict:
          import requests
          response = requests.get(f"https://api.mystore.com/orders/{order_id}")
          return response.json()
      ===============================================================================
      4. 결과 처리 (예시)
      ==============================================================================
      {
          "order_id": "1234",
          "status": "배송 중",
          "expected_delivery": "2024-11-23"
      }
      ==============================================================================
      5. 결과 반환 : 결과를 보고 사람에게 익숙한 메세지로 결과를 출력합니다.
      • IoT 기기 제어: 스마트 조명을 켜거나 특정 기기를 제어합니다.


      3. 활용 예시

      3.1. 긴급 대응 비서

      긴급 상황(예: 화재, 도난)에서 AI가 빠르게 필요한 조치를 취함.

      프로세스

      • 고객 요청: "여기서 화재가 발생했어. 소방서에 연락하고 대피 경로를 알려줘." (현재 백화점)

      • 실행과정

      1. Function Call 실행 : 소방서에 연락

      def report_fire(location: str) -> str:
          import requests
          response = requests.post("https://api.firedepartment.com/report", json={"location": location})
          return response.json().get("status", "unknown")
      1. Function Call 실행 : 대피경로 안내

      def generate_escape_route(home_layout: dict, fire_location: str) -> list:
          # 단순한 알고리즘으로 대피 경로 생성
          escape_route = ["오른쪽", "왼쪽", "비상구", "계단", "1층 출구"]
          return escape_route
      • 결과 반환: "화재 신고가 접수되었습니다. 대피 경로는 오른쪽으로 가서 다시 왼쪽에 보면 비상구가 있습니다.

        비상구를 통해 계단으로 내려가 1층 출구로 가십시오. 빠르고 안전하게 대피하세요.

      3.2. 금융 상담 Assistant

      사용자의 재무 데이터를 분석하고, 투자 조언을 제공합니다.

      프로세스

      • 사용자 요청: "1000달러를 원화로 변환하면 얼마인가요?"

      • API 호출: 환율 API를 호출하여 최신 환율 정보를 검색합니다.

      • 결과 반환: "현재 환율로 1000달러는 약 1,150,000원입니다."


      4. 결론

      Assistant API는 AI와의 상호작용을 새로운 차원으로 이끌며, 개발자들이 맞춤형 AI Assistant를 구축할 수 있는 강력한 도구입니다.

      File Search, Code Interpreter, Function Calling 같은 기능을 활용해 다양한 분야에서 실질적인 문제를 해결할 수 있다고 합니다.


      하지만 개인적으로는 조만간 Agent 시대가 도래할 것으로 예상되며, OpenAI의 API도 이러한 방향으로 발전하고 있다고 생각합니다.

      내년에는 더 다양하고 강력한 Agent가 등장할 것으로 보이며, 개인적으로도 어떤 방향의 Agent가 개발 아이템으로 적합할지 깊이 고민하게 됩니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      긴꼬리 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기