제목에 낚인 분도 계실 것 같다.

우리 엘론 머스크 형님의 Grok 하고 나도 햇갈려서 뭔가 이상해했었다.

 

Groq은 사실 H/W 업체로 봐야 한다.

  - https://groq.com/

 

 

보다 빠르고 낮은 가격에 인퍼런싱을 할 수 있는 LPU 업체인 것이다.

 

LPU가 뭐냐고?

`LLM Processing Unit`이라고, LLM 처리를 위한 칩이다.

  - https://groq.com/lpu-architecture

 

 

그 기술력을 인정 받아서 25년 12월, 200억 달러(약 30조)에 Nvidia에서 인수했다.

  - https://news.hada.io/topic?id=25318

 

 

  - https://www.cnbc.com/2025/12/24/nvidia-buying-ai-chip-startup-groq-for-about-20-billion-biggest-deal.html

 

 

그리고,

Groq은 자신들의 칩 성능을 증명하기 위해서 `오픈 웨이트 모델`들의 API를 제공하는 서비스를 했는데

저렴한 가격과 함께 좋은 성능을 보여 생각보다 꽤 괜찮은 인기를 얻고 있다.

 

 

다양한 모델들을 제공하고 있지는 않은데,

모델 자체의 다양성 보다는 다양한 용도에 걸쳐서 골고루 제공하고 있다.

 

 

 

Groq에 대해서는 그만 알아보고

API를 사용해보기 위해 회원 가입을 빠르게 해보자 !!!

  - https://console.groq.com/home

 

 

물론 공짜는 아니다 !!!

성능(속도)에 자신이 있기에 가장 앞에 TPS를 내세우고 있다.

  - https://groq.com/pricing

 

 

공짜가 아니라서 서운해하면 안된다.

Free Plan 에서도 꽤 쓸만큼 제공해준다.

  - https://console.groq.com/docs/rate-limits

 

 

각 필드가 어떤 의미인지 모르겠다고 ?!

그럴줄 알고 친절하게 다 설명해준다.

 

 

API를 사용하기 위해서는 당연히 Key를 발급 받아야 한다.

오른쪽 위 메뉴에서 `API Keys`를 클릭하자.

  - https://console.groq.com/home

 

 

`Create API Key`를 클릭하면 된다.

  - https://console.groq.com/keys

 

 

적당히 이름과 만료 기간을 정해주면 된다.

 

 

이렇게 생성한 Key 값을 잘 적어두자.

 

 

어떻게 사용할지 모를 때에는 공식 문서를 살펴봐야 한다.

  - https://console.groq.com/docs/overview

 

 

응?! 뭐지 Getting Start 동영상이 비공개 ????

하지만, 우리는 빠르게 `Quick Start`를 살펴보도록 하자.

  - https://console.groq.com/docs/quickstart

 

 

나는 uv를 사랑하기에 uv 방식으로 따라해봤다.

 

 

groq 패키지를 설치하자.

 

 

소스 코드는 `Quick Start`에 있는 것 그대로 해봤다.

 

 

아까 받아놓은 Key 값을 환경 변수로 설정하고

Python 실행하면 ... 꽤 빠르게 결과가 나온다.

 

 

대시보드를 보면 API를 얼마나 사용했는지 확인도 할 수 있다.

  - https://console.groq.com/dashboard/metrics

 

 

이것 저것 실험할 때 잘 사용해봐야겠다 !!!!

반응형

`구글의 위기`라고 했던 것이 얼마 안된 것 같은데,

최근에는 ChatGPT 대신 Gemini를 구독한다는 사람들이 주위에 종종 있는 것을 보면 정말 구글의 저력이란 !!!

 

AI 개발자들을 위해서 제공해주는 통합 사이트를 방문해보자.

- https://ai.google.dev/ 

 

 

Gemini API 가이드 문서도 여기에서 살펴볼 수 있다.

https://ai.google.dev/gemini-api/docs 

 

 

 

Gemini API를 사용하기 위한 방법을 빠르게 살펴보도록 하자.

- https://ai.google.dev/gemini-api/docs/quickstart 

 

 

Coding Agent의 세상이기에 Skills 설치 가이드를 친절하게 알려주고 있다.

 

Skills 등록하고 Coding Agent에게 알아서 하라고 해도 되겠지만,

우리는 공부하는 입장이니 훌륭한 Human Agent가 되기 위해 하나씩 공부해보자 !!

 

① API Key

API를 사용하겠다라고 하면 제일 먼저 떠오르는 그것 !!!

API Key를 확보해야한다.

 

 

Google AI Studio에서 Key를 받을 수 있다.

- https://aistudio.google.com/app/api-keys

 

 

예전에는 GCP 설정을 포함해서 상당히 복잡했지만,

요즘은 Google AI Studio에서 너무나 편하게 제공해주고 있다.

 

② GenAI SDK

Google에서는 일단 공식적으로 6개 언어를 지원해주고 있다.

https://ai.google.dev/gemini-api/docs/quickstart 

 

 

가장 대중적인, 그리고 내가 사랑하는 Python을 기준으로 살펴보겠다.

 

그런데, Gemini API를 사용하는 방법에 대해 구글링을 하다보면,

상당히 많은 블로그 포스팅 및 가이드에서 generativeai 패키지 이야기를 하고 있다.

- https://pypi.org/project/google-generativeai/

 

 

그렇다 !!

이제는 Deprecated 된 패키지이다.

지금은 genai 패키지를 사용해야 하는 것이다.

- https://pypi.org/project/google-genai/

 

 

 

③ Hands-On

genai 패키지는 Python v3.9 이상부터 지원을 하고 있다.

개인적인 취향 + 최근 트랜드에 맞춰 uv 패키지 관리자를 사용하는 것을 기준으로 실습해보도록 하겠다.

 

> uv python list | grep cpython

 

> uv init {project} --python 3.12
> cd {project}

 

genai 패키지 설치만 하면 된다.

 

> uv add google-genai

 

환경변수로 Key값 설정 후 가이드에 있는 샘플코드를 돌려보면 잘 되는 것을 확인할 수 있다.

 

 

간단하게 살펴보았다 !!

반응형

여기에서 해보고 싶은 것은 "동탄" 키워드가 들어간 최근 블로그를 검색해서

그 제목과 본문 내용, 링크 값을 얻어오는 코드를 작성해보고자 한다.

 

0. 개발 환경

- OS: Ubuntu 20.04

- Lang: Python 3.10.9

 

 

1. 준비

① NAVER API를 사용하기 위해 API 키를 생성하자.

    - NAVER 서비스 API 사용 준비

 

② 환경변수를 다루기 위해서 dotenvx를 사용해보자.

    - 아는 사람만 쓴다는 Config 관리자 - dotenv, dotenvx

 

 

2. 코드 작성

일단 API 호출을 위해 requests 패키지를 사용하기로 했다.

 

[ requirements.txt ]

requests==2.32.3

 

가급적 클래스 구조로 작성해봤다.

[ main.py ]

import requests
import os

class BlogPost:
    def __init__(self, title, description, link):
        self.title = title.replace("<b>", "").replace("</b>", "")
        self.description = description.replace("<b>", "").replace("</b>", "")
        self.link = link

    def __str__(self):
        return f"Title: {self.title}\nDescription: {self.description}\nURL: {self.link}\n"

class NaverBlogSearcher:
    def __init__(self):
        self.client_id = os.getenv("NAVER_CLIENT_ID")  # 환경변수에서 Client ID 읽어오기
        self.client_secret = os.getenv("NAVER_CLIENT_SECRET")  # 환경변수에서 Client Secret 읽어오기

        # 환경변수 값이 없을 때 예외 처리
        if not self.client_id or not self.client_secret:
            raise ValueError("NAVER_CLIENT_ID and NAVER_CLIENT_SECRET must be set as environment variables.")

    def get_blog_posts(self, query, display=10):
        # 요청 URL 및 헤더 구성
        url = f"https://openapi.naver.com/v1/search/blog.json?query={query}&display={display}&sort=date"
        headers = {
            "X-Naver-Client-Id": self.client_id,
            "X-Naver-Client-Secret": self.client_secret,
        }

        # 네이버 API에 요청 보내기
        response = requests.get(url, headers=headers)
        
        if response.status_code == 200:
            return self.parse_response(response.json())
        else:
            print(f"Error: {response.status_code}, {response.text}")
            return []

    def parse_response(self, data):
        # 응답 데이터 파싱
        blogs = data.get("items", [])
        blog_posts = [BlogPost(blog.get("title"), blog.get("description"), blog.get("link")) for blog in blogs]
        return blog_posts

if __name__ == "__main__":
    # "동탄" 검색어로 최신 블로그 정보 가져오기
    try:
        searcher = NaverBlogSearcher()
        blog_posts = searcher.get_blog_posts("동탄", 3)
        for post in blog_posts:
            print(post)
    except ValueError as e:
        print(e)

 

환경 변수도 작성했다.

[ .env ]

NAVER_CLIENT_ID=""
NAVER_CLIENT_SECRET=""

 

 

3. 실행

dotenvx를 사용해서 실행했다.

> dotenvx run -f .env -- python main.py

 

나름 잘 진행되었다 !!! (스스로 뿌듯~)

반응형

옛날에 한 번 포스팅을 했었는데, 업데이트가 필요해서 다시 작성해본다.

- https://www.whatwant.com/entry/Naver-API-사용-준비하기

 

1. NAVER Developers

네이버 개발자 사이트에 방문해서 로그인까지 진행하자.

- https://developers.naver.com/

 

NAVER Developers

 

 

2. 서비스 API

일단 여기에서는 "검색"을 위한 API 사용 신청하는 과정을 기준으로 설명해보겠다.

 

서비스 API

 

상단 메뉴에서 "서비스 API - 검색" 메뉴를 선택해보자.

 

검색

 

3. 오픈 API 이용 신청

처음 사용자는 이용약관 동의나 계정 설정 등을 요구할 수도 있다.

나는 예전에 신청했던 이력이 있어서인지 바로 애플리케이션 등록 창으로 이동되었다.

 

애플리케이션 등록

 

"애플리케이션 이름" 적절하게 창작하면 되고,

"사용 API"는 검색을 선택했다. 각자 필요한 것 추가해도 된다.

 

"비로그인 오픈 API 서비스 환경"은 사용할 상황에 따라 잡아주면 되는데,

나는 일단 "WEB 설정"으로 하고 적당한 도메인 정보를 넣어주었다.

 

4. 애플리케이션 정보

사용할 때 필요한 "Client ID"와 "Client Secret"이 발행되었다.

 

애플리케이션 정보

 

하루에 2만5천번 호출할 수 있네!!!!

 

반응형

그냥 막 갑자기 GenAI를 이용해서 뭐라도 하나 간단하게 만들어 보고 싶다는 생각에 막 진행해봤다.

 

0. 실습 환경

- Ubuntu 20.04

 

1. Gemini API

- 우리의 Google님은 간단하게 사용하는 정도는 무료로 제공해주신다.

  . https://ai.google.dev/pricing?hl=ko#1_5flash

Gemini Pricing

 

- 언제나 그렇듯이 API 사용을 위해서는 Key를 생성해야 한다.

  . https://ai.google.dev/aistudio?hl=ko

Google AI Studio

 

- 구글 계정을 통해 로그인 하고 API key를 얻으면 된다.

  . https://aistudio.google.com/apikey

Get API key

 

2. React App 생성

- Vite를 이용해서 React App을 생성하자. 다음 링크를 참고해서 진행하면 된다.

  . https://www.whatwant.com/entry/vite

 

3. 패키지 설치

- Gemini API 사용을 위해서 패키지를 설치하자.

> npm install @google/generative-ai

> npm install

> npm run dev

npm run dev

 

- 브라우저를 열어서 접속해보자.

WEB

 

4. 파일 생성

- src/ 디렉토리 밑에 파일 하나 새로 만들어서 코드를 작성해보자.

  . 여기에서는 NagBox.jsx 이름으로 만들어봤다.

new file

 

5. 코드 작성

- 다음과 같이 코드를 작성해보자.

import { useState, useEffect } from "react";
import { GoogleGenerativeAI } from "@google/generative-ai";

export default function NagBox() {
  const [response, setResponse] = useState("");
  const [error, setError] = useState(null);
  const [currentTime, setCurrentTime] = useState(new Date());

  const fetchNag = async () => {
    try {
      const genAI = new GoogleGenerativeAI("API KEY");
      const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
      const prompt = "공부를 열심히 할 수 있도록 잔소리를 해주세요.";
      const result = await model.generateContent(prompt);
      const text = result.response.text();
      setResponse(text);
    } catch (err) {
      setError(err.message);
    }
  };

  useEffect(() => {
    fetchNag();

    const nagIntervalId = setInterval(fetchNag, 30000);
    const clockIntervalId = setInterval(() => setCurrentTime(new Date()), 1000);

    return () => {
      clearInterval(nagIntervalId);
      clearInterval(clockIntervalId);
    };
  }, []);

  return (
    <div style={{ position: "relative", minHeight: "100vh" }}>
      {error ? <p>{error}</p> : <p>{response}</p>}
      <div
        style={{
          position: "fixed",
          bottom: 10,
          right: 10,
          backgroundColor: "white",
          padding: "10px",
          borderRadius: "5px",
          boxShadow: "0 0 10px rgba(0,0,0,0.2)",
        }}
      >
        {currentTime.toLocaleTimeString()}
      </div>
    </div>
  );
}

code


- main.jsx 파일도 수정해주자.

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
// import App from './App.jsx'
import App from './NagBox.jsx'

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <App />
  </StrictMode>,
)

 

code

 

- 웹브라우저로 결과를 확인해보자.

WEB

 

이모지를 사용하라고 하지도 않았는데...

우와... 잔소리를 하라고 했지, 나의 자존감을 꺾으라고는 안했는데... 우와~~~~ 제미나이, 대단하네!!!

 

 

기본적인 코드는 아래 사이트를 참고했습니다.

- https://www.codedex.io/projects/generate-a-poem-with-google-gemini

 

반응형

'AI_ML > LLM' 카테고리의 다른 글

HuggingFace - LLAMA 3.2 for Korean  (2) 2024.11.12
HuggingFace - Learn - NLP Course #3  (3) 2024.11.11
HuggingFace - Learn - NLP Course #2  (0) 2024.11.10
HuggingFace - Learn - NLP Course  (1) 2024.11.09
HuggingFace (허깅페이스 소개)  (0) 2024.06.24

앞서서 Postman을 다운로드 받아서 설치까지 진행을 해봤다.

아직 하지 않은 분들이 있다면 아래 포스트를 참고해서 설치를 하기 바란다.

API 테스트를 위한 Postman (포스트맨) - 설치

 

잘 동작하는지 알아보기 위해서는 API Service가 하나 있어야 한다.

얼마전 살펴본 기상청의 날씨 정보 API를 이용해보도록 하겠다.

날씨 정보 API 활용하기 (Python)

 

 

Postman을 실행하면 다음과 같은 화면이 나온다.

 

파이썬 코드를 reference로 삼아서

우리가 사용하고자 하는 API 정보를 살펴보자.

https://www.whatwant.com/entry/weather-api

 

우리가 사용하고자 하는 API 모습은 다음과 같다.

http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst

 

HTTP 방식이라는 것을 일단 확실하게 하고 그 주소를 적어주면 된다.

 

parameters들은 그 아래에 하나씩 입력해주면 된다.

 

여기에서 조금 고생한 부분은 인증키 부분이다.

Python으로 작업을 할 때에는 Decoding된 인증키를 사용해야 했었는데,

Postman을 사용할 때에는 Encoding된 인증키를 넣어줘야 했다.

 

이제 "Send"를 누르면 결과를 확인할 수 있다.

 

 

사실 별 어려울 것 없이 간단한 사용인데,

과연 이게 Postman의 전부일까?!

 

당연히 아니다.

 

하지만, 본격적인 Postman 활용을 위해서는 Account를 등록해서 사용을 해야 한다.

회사에서 사용하기에는 뭔가 좀 찜찜한 조건이다.

 

나중에 필요하다고 하면

Account 등록해서 본격적인 사용하는 것도 한 번 살펴보도록 하겠다.

반응형

다른 API 테스트 툴을 써보려고 하다가

굳이 시장 지배적인 위치에 있는 Postman을 두고 다른 도구를 써야하나?라는 생각이 들어서... ^^

 

https://www.postman.com/

Postman

 

어?! 사이트 주소가 ".com" 이네!?

이거 회사에서 free 사용해도 되는 것일까?

Pricing

 

역시나! 가격 정책이 존재한다.

이거 참... 애매하다.

 

회사에서 상업적 목적으로 사용해도 되는걸까?

구글링을 해보니 이런 답변이 있긴 하다.

 

https://gytni.com/new_gytni/qna.php?document_srl=25138&mode=contact&mode2=view&mode3=chk

Q&A

 

언제든 변할 수 있는 것이 라이선스이고, 가격정책인지라

현재 시점에서도 허용되는 내역인지는 추가 확인이 필요할 것 같다.

 

법적 해석까지는 모르겠지만,

현재 Terms 내용을 살펴봐도 그렇고, 구글링 결과들을 살펴봐도

회사에서 상업적 목적으로 사용하는 것은 가능한 것으로 보인다.

 

그런데, 여기에서 하나 더 살펴볼 것이 있다.

위의 가격정책은 플랫폼 서비스로 제공되는 것에 기반한 정책으로 보인다.

Product

 

다운로드 받아서 직접 설치해서 사용할 수도 있는 것이다.

Downloads

 

다운로드 받아서 직접 설치/사용한다고 하여 무조건 free 인 것은 아니지만,

보안 측면에서도 그렇고 여러가지를 검토해봐도 그렇고

회사에서 사용한다고 하면 다운로드 받아서 직접 설치 후 사용하는 것이 안전하다고 판단된다.

 

 

 

1. Download

웹사이트를 통해서 다운로드를 받는 것이 가장 편하지만,

개인적인 취향으로 CLI를 통해 다운로드 받는 것을 좋아하기 때문에 다음과 같이 진행했다.

 

> wget https://dl.pstmn.io/download/latest/linux64 -O postman-linux-x64.tar.gz

 

 

2. Extract

압축 해제를 하면 된다.

 

참고로 주로 "/opt" 경로를 사용하도록 가이드를 하고 있는데.

개인적인 취향으로 "/srv/install/postman" 경로를 사용했다.

 

> tar -zxvf postman-linux-x64.tar.gz

 

 

3. Symlink

실행 경로 등을 위해 symlink 생성을 해주면 좋다.

 

> sudo ln -s /srv/install/postman/Postman/Postman /usr/bin/postman

 

 

4. Desktop Icon (Optional)

선택적이기는 한데,

GUI에서 편하게 사용하기 위해 아이콘을 만들어 놓으면 좋다.

 

> sudo nano /usr/share/applications/postman.desktop

 

[Desktop Entry]
Type=Application
Name=Postman
Icon=/srv/install/postman/Postman/app/resources/app/assets/icon.png
Exec="/srv/install/postman/Postman/Postman"
Comment=Postman Desktop App
Categories=Development;Code;

 

오른쪽 아래에 예쁘게 생성되어 있는 것을 볼 수 있다.

 

 

5. Execute

실행을 해보자.

위에서 생성한 아이콘을 이용해도 좋고, CLI를 통해서도 실행할 수 있다.

 

웹 인터페이스가 아니라 Client가 실행된다.

 

6. Account

계정을 요구한다.

"Create Free Account"를 선택하면...

 

홈페이지에서 계정 생성하는 화면으로 넘어온다.

굳이 계정을 만들고 싶지는 않은데...

 

그래서 "Continue without an account"를 선택해보면 다음과 같은 화면을 볼 수 있다.

 

부족하더라도 "Open Lightweight API Client"를 이용하도록 하자.

 

 

7. GUI Client

이제 드디어 원하는 화면을 볼 수 있다.

 

사용법은 다음 포스팅으로 정리해보겠다.

반응형

요즘 저녁에 러닝을 하기 위해 격일로 조금 일찍 퇴근을 하는데.

비 예보가 있다는 것을 미처 인지하지 못해서 일도 못하고 러닝도 못하는 그런 사태가...

 

이런 핑계(?)로 갑자기 날씨 정보를 API로 얻어오는 것을 한 번 해보고 싶어졌다.

갑자기? 갑자기!

 

날씨 정보를 어디에서 얻어와야 할까!?

당연히 기상청 !!!

https://www.data.go.kr/data/15084084/openapi.do

 

무료인데다가 심지어 샘플 코드까지 제공해주고 있다.

샘플코드 - Python

 

사용을 위해서는 오른쪽 상단에 위치한 "활용신청"을 클릭하면 된다.

활용신청

 

적절한 내용으로 작성하여 신청하면, 즉시 승인이 된다.

신청 결과

 

상세 내용을 보면 다음과 같이 인증키 정보를 확인할 수 있다.

상세 내용

 

이제 잘 동작하는지 검증을 해보자.

 

1. Python 환경을 맞춰야 한다.

- requests 모듈을 사용하기 위해 설치가 필요하다.

 

2. 지역 위경도값을 확인하자.

- 공공데이터 포털에서 제공하는 참고문서를 다운로드 받아야 한다.

  . 기상청41_단기예보 조회서비스_오픈API활용가이드_(240715).zip

 

- 압축을 풀면 문서 파일이 2개 나오는데, 위경도 정보가 있는 엑셀 파일을 확인하면 된다.

 

- 내가 확인하고자 하는 지역의 X, Y 값을 확인하면 된다.

 

3. 코드 작성

- 다음과 같이 간단한 코드를 작성해보자.

  . API 키는 일반 인증키(Decoding )으로 사용했다.

 

- 실행 결과는 다음과 같이 나온다.

 

 

각 값들의 의미나 활용 관련하여서는 다운로드 받은 참고 자료 中 워드 파일을 살펴보면 된다.

sample

 

일단 기본적인 확인을 해봤으니,

아침에 자동으로 알람 오도록 만들어봐야겠다! ^^

반응형

+ Recent posts