25.05.19 코딩 공부 시작

코딩 척척석박사 분들 피드백 환영합니다.

공대생이 코딩에서 살아남기

특강/생성형 AI를 활용한 리포팅 자동화(API)

[Open AI] 생성형 AI API (08.21)

코딩 아가 2025. 8. 26. 17:07

Open API(Application Programming Interface)란?

다른 소프트웨어 애플리케이션들이 상호작용할 수 있도록 하는 방법이나 규칙

소프트웨어가 다른 소프트웨어와 통신할 수 있게 하는 다리 역할

 알아야 하는 이유

  1. 업계 트렌드 선도: 기업이 필요로 하는 핵심 능력 (최생성형 AI API를 실제 분석 리포팅에 접목하는 방법)
  2. 효율적인 업무 프로세스: 반복적 리포팅 작업을 자동화하여 분석 결과 활용과 의사결정 지원 가능
  3. 차별화된 경쟁력 확보: 빠르게 변화하는 AI 활용 역량을 갖춘 인재를 선호

ex. LLM, RAG, ChatGPT

LLM(Large language model)이란?

인간의 언어를 학습한 인공지능 모델

장점

  • 광범위한 지식
  • 페르소나 생성 가능 (말투, 억양, 역할 놀이 등)
  • 창의적인 글짓기 가능
  • 원하는 포멧으로 답변 가능 (테이블, 리스트 등)

단점

  • 거짓 정보(할루시네이션)
  • 기억력의 한계
  • 최신 데이터 모름

OpenAI 종류

  • 언어 모델 : ChatGPT, Claude(클로드), 제미나이
  • 이미지 생성 : DALL.E
  • 이미지 이해 : VISION
  • 음성 인식 : Whisper(STT: Speech-To-Text)
  • 음성 생성 : TTS(Text-To-Speech)
  • 동영상 생성 : SORA

ChatGPT란?

OpenAI에서 개발한 대화형 인공지능 언어 모델

  • 자연어 이해와 생성: 문장을 이해하고 적절한 답변을 생성하는 능력이 뛰어남
  • 광범위한 지식: 다양한 주제에 대해 폭넓은 지식을 보유하고 있어, 다양한 질문에 대해 답변 가능
  • 다양한 언어 지원: 여러 언어로 대화할 수 있으며, 언어 간 번역도 가능
  • 창의적인 글쓰기: 에세이, 소설, 시 등의 창의적인 글쓰기를 지원

OpenAI

1. model: 어떤 모델을 사용

2. Temperature: 0~2 점점 자세하게 설명, 흔하지 않은 것들 설명

3. Instructions: 역할 부여

4. 이전 내용 기억하기

  • 수동으로  추가
input=[
 {"role": "user", "content": "2002년 월드컵에서 가장 화제가 되었던 나라는 어디야?"}, # 이전 질문
 {"role": "assistant", "content": "바로 예상을 뚫고 4강 진출 신화를 일으킨 한국입니다."}, # 이전 답변
 {"role": "user", "content": "그 나라가 화제가 되었던 이유를 자세하게 설명해줘"} # 마지막 질문
 ]
  • response.id 활용하기
previous_response_id=response.id

5. 얼마 나온지 계산해보기

total_bill_USD = response.usage.input_tokens * 0.2/1000000 + response.usage.output_tokens * 0.8/1000000
total_bill_WON = total_bill_USD*1400
print("총 발생 비용 {} 원".format(total_bill_WON))

6. 히스토리 보기

비정형 데이터 > 정형 데이터

1. cvs파일

import pandas as pd
df_review = pd.read_csv("review.csv")
df_review.head()

df_review_10= df_review[["Review_text","Address"]].head(10)

def make_review_pn(review):
    prompt = f'''
    아래 리뷰를 읽고 긍정인지 부정인지 판단해줘 긍정 또는 부정 만 말해줘

    리뷰: {review}
    '''
    response = client.responses.create(
        model="gpt-4.1-nano",
        input=prompt
    )

    return response.output_text
    
df_review_10["긍정/부정"] = df_review_10['Review_text'].apply(make_review_pn)
df_review_10

2. 구글스프레드시트

파일 > 사본만들기

사본: 확장프로그램 > Apps Script > 아래 첫번째 코드넣기 > 저장 > 실행 > 아래 두번째 코드를 스프레드시트에 복붙

API_KEY = ""
MODEL = "gpt-4.1-mini"
function GPT(prompt, cell) {
  // 프롬프트 입력 여부 확인
  if (!prompt) {
    console.log("prompt를 입력하세요");
    return;
  }

  // 프롬프트와 스프레드시트 셀 값 결합
  const combinedInput = prompt + " " + cell;

  // API 요청 URL 설정
  const BASE_URL = "https://api.openai.com/v1/chat/completions";

  // API 요청을 위한 헤더 구성
  const headers = {
    "Content-Type": "application/json",
    "Authorization": `Bearer ${API_KEY}`
  };

  // API 요청 본문 데이터 구성
  const data = {
    model: MODEL,
    messages: [
      {role: "system", content: "You are a helpful assistant."},
      {role: "user", content: combinedInput}
    ],
    temperature:0,
    max_tokens: 1000
  };

  // API 요청 옵션 설정
  const options = {
    "headers": headers,
    "method": "post",
    "muteHttpExceptions": true,
    "payload": JSON.stringify(data)
  };

  // API 호출 및 응답 처리
  try {
    const response = UrlFetchApp.fetch(BASE_URL, options);
    const jsonResponse = JSON.parse(response.getContentText());
    console.log(jsonResponse.choices[0].message.content);

    return jsonResponse.choices[0].message.content;
  } catch (e) {
    console.error("Error calling the OpenAI API:", e);
    return "Error calling the OpenAI API. Please check logs for more details.";
  }
}
=GPT("다음의 전화번호 정보안에 불필요한 이모지, 문자, 띄어쓰기를 삭제하고 다음 포멧으로 정리해줘
**별도 설명 없이 예시들과 같이 전화번호 정보를 참고 후  오직 전화번호만 작성해줘**
예시1) 
전화번호 정보:📱01020295290
010-2029-5290
예시2) 
전화번호 정보:1025514684
010-2551-4684
예시3) 
전화번호 정보:82-010-3586-9358
010-3586-9358

전화번호 정보:",A2)