jyamethyst21 님의 블로그

머신러닝 & 딥러닝 본문

보안 & IT 지식 🌺

머신러닝 & 딥러닝

jyamethyst21 2026. 1. 19. 18:05

OpenAI API

- OpenAI가 개발한 인터페이스로, API 호출을 통해 텍스트 생성, 대화형 응답 등을 구현할 수 있음

- Responces API: OpenAI가 제공하는 가장 진보된 응답 생성 인터페이스로, 이미지 입력 및 텍스트 출력 등을 지원함, 이전 응답의 출력을 다시 입력으로 사용해 상태를 유지하는 상호작용이 가능

- Chat Completions API: 메시지 목록을 기반으로 대화형 응답을 생성하는 전통적인 방식, 단순한 챗봇 구현에 적합

# responces 예시

from dotenv import load_dotenv
import os

load_dotenv()

OPENAI_API_KEY = os.getenv('OPENAI_API_KEY') # OpenAI KEY 불러오기

# OpenAI에 연결
from openai import OpenAI

client = OpenAI(api_key=OPENAI_API_KEY)

# 응답 생성: Responses
response = client.responses.create(
    model = 'gpt-5.2',
    input = '환승연애4 마지막화 언제야?'
)

response.output_text

# 결과: '현재 공개된 공식 편성/공개 일정만으로는 **‘환승연애4’ 마지막화(최종회) 날짜가 확정 공지되지 않았을 가능성**이 큽니다. 플랫폼(티빙)에서 종종 **방영 중에 회차 수·공개일이 변동**되기도 해서, 최종회 날짜는 **티빙 편성표/공지**로 가장 정확하게 확인하는 게 좋아요.\n\n확인 방법(가장 빠름):\n1) **티빙 앱/웹 → 환승연애4 → ‘회차’ 탭**에서 마지막 회차 공개일 표시 확인  \n2) **티빙 공지사항/공식 SNS**(티빙, 제작사/프로그램 계정)에서 최종회 안내 확인\n\n원하시면 **지금 보이는 정보(티빙 화면 캡처나 현재 몇 화까지 나왔는지)**를 알려주면, 그 기준으로 **마지막화가 언제쯤일지** 같이 계산해서 정리해드릴게요.'


# 다른 방식 (지시사항 부여)
# 응답 생성: Responses
response = client.responses.create(
    model = 'gpt-5.2',
    instructions='당신은 예능PD야!',
    input = '환승연애4 마지막화에서 누가 이어질 거라고 생각해? 애매모호하게 말하지말고 등장인물 이름을 정확히 말해줘'
)
print(response.output_text) 

# 결과: 
나는 **「환승연애4」 마지막화에서 누가 이어질지**를 **실제 출연자 이름으로 딱 집어서 예측**해달라는 요청은 해줄 수 없어.  
(지금 내 쪽에서는 **환승연애4의 최신 회차/최종 선택 결과나 정확한 출연자 라인업을 확정적으로 조회**할 수 없고, 실명으로 특정 커플을 “이어질 거다”라고 단정해서 말하면 **근거 없는 단정**이 돼.)

대신 이렇게 해주면, **이름 정확히 박아서** PD 모드로 “결말 예측”을 깔끔하게 해줄게:

1) **출연자 전체 이름 리스트**(최소 남/여 각각)  
2) **현재 몇 화까지 봤는지** + 마지막화 직전 관계 요약(누가 누구랑 데이트/갈등/직진 중인지)

이 두 가지만 보내주면 내가  
- **1순위 이어질 커플(이름 정확히)**  
- **2순위 변수 커플(이름 정확히)**  
- **결별 가능성 높은 조합(이름 정확히)**  
으로 **애매하게 말 안 하고** 딱 정리해줄게.

출연자 이름부터 적어줘.
response = client.responses.create(
    model = 'gpt-5.2',
    input = [
        {   'role' : 'developer',
            'content' : '음식에 대한 이야기 하는 것을 좋아해' 
        },
        {
            'role' : 'user',
            'content' : '오늘은 무엇을 먹을까?'
        }
    ]
)
print(response.output_text)

두번째 코드 박스처럼 역할을 지정할 수도 있다. developer와 user 메시지는 프로그래밍 언어의 함수와 그 인수처럼 생각할 수 있으며 developer 메시지는 함수 정의처럼 시스템의 규칙과 비즈니스 로직을 제공하고, user 메시지는 함수에 대한 인수처럼 개발자 메시지 지침이 적용되는 입력 및 구성을 제공한다. 

일반적으로 developer가 user보다 우선순위가 높다.

.

.

직접 사용해본 결과 답변이 chat GPT처럼 매끄럽다고 느껴지지 않았고, 정보도 두루뭉실하게 제공해준다고 생각했다. 

Function Calling

- 기존 GPT 기반 챗봇은 사용자의 질문에 대해 텍스트 답변만 생성, 또한, 실제 외부 도구와 신뢰성 있게 연동하는 데 한계가 존재

- 이에 GPT-4의 새로운 기능인 Function Calling 등장, 모델이 함수 호출 형태의 응답을 생성해 외부 시스템 또는 API와 직접 연동할 수 있게 함

- 개발자가 정의한 함수의 스펙에 따라, 모델이 JSON 형식의 인자를 생성하여 함수 호출 요청을 반환

 

- 예시

• 기존 AI: 파리 날씨 알려줘 -> 글자로 대답

• Function Calling AI: 파리 날씨 알려줘 -> 내부적으로 날씨 함수가 필요하다고 판단 -> 위도 및 경도 생성 -> 함수 실행 요청 -> 실제 서버에서 API 호출 -> 결과를 받아 자연어로 설명

-> 즉, AI가 판단하고 프로그램이 실행하는 것을 의미

 

- 함수 호출 예제 (함수 호출 기능에서 사용할 툴 정의 시)

tools = [{
"type": "function",
"name": "get_weather",
"description": "Get current temperature for provided coordinates in celsius.",
"parameters": {
"type": "object",
"properties": {
"latitude": {"type": "number"},
"longitude": {"type": "number"}
},
"required": ["latitude", "longitude"],
"additionalProperties": False
},
"strict": True
}]

• tools = [{ ... }] 여러 개의 함수 정의를 리스트로 묶어서 전달

• "type": "function“ 함수 호출용 툴임을 명시, 만약 이미지를 생성하는 툴이면 "type": "image"처럼 다르게 표기

• "name": "get_weather“ 함수의 이름, 나중에 모델이 함수 호출 요청 시 "get_weather"라는 이름으로 호출

• "description": "Get current temperature for provided coordinates in celsius.“ 이 함수가 어떤 역할을 하는지 설명하는 텍스트, 모델이 함수 선택/이해 시 참고

• "parameters": { ... } 함수에 전달해야 할 파라미터(입력값) 정의

• "strict": True 엄격하게 파라미터 형식이 맞는 경우에만 함수 호출을 허용, 위도/경도 중 하나라도 빠지면 함수 호출이 실행되지 않음

최종 정리(예시: OpenAI로 함수 호출 챗봇 제작 시)

- 순서

• 파이썬에서 함수들을 먼저 만든다.

• 해당 함수를 정리해서 알려줌

• 사용자의 질문을 OpenAI에 전송

• OpenAI가 말로 답할지, 함수 호출이 필요한지 판단

• 함수 호출이 오면 파이썬 함수 실행

• 실행 결과를 다시 OpenAI에 보내서 최종 자연어 답변을 받음

'보안 & IT 지식 🌺' 카테고리의 다른 글

네트워크 보안  (0) 2026.02.02
머신러닝 & 딥러닝  (0) 2026.01.20
머신러닝 & 딥러닝  (0) 2026.01.16
머신러닝 & 딥러닝  (1) 2026.01.16
머신러닝 & 딥러닝  (0) 2026.01.14