inblog logo
|
hollyisyoon
    스터디

    [GPT] API를 활용한 서비스 만들기(1)

    Sep 07, 2023
    [GPT] API를 활용한 서비스 만들기(1)
    Contents
    1. GPT의 원리와 등장 배경2. Python기초3. OpenAI API4. AI서비스를 만들기 위해 필요한 라이브러리Etc. 블로그 콘텐츠 마케팅xGPT토이 프로젝트 기획해보기
    1. GPT의 원리와 등장 배경1.1. GenAI 와 비즈니스1.2. ChatGPT 학습 원리2. Python기초2.1. 터미널 명령어3. OpenAI API3.1. OepnAI에서 제공하는 API 종류3.2. Playground4. AI서비스를 만들기 위해 필요한 라이브러리4-1. Fast API란?4-2. Fast APIEtc. 블로그 콘텐츠 마케팅xGPT토이 프로젝트 기획해보기
     

    1. GPT의 원리와 등장 배경

    1.1. GenAI 와 비즈니스

    • SEQUOIA : Generative AI - A Creative New World →2022년 작성된 기사다
    notion image
     
    notion image
    • 김칠힐 <생성모델이 미래다>
      • tmi : 상희님(샌드버드 CM) SaaS 관련 정말 좋은 아티클들 작성해주셔서.. 도움을 많이 받았던 블로그!
      • Gen AI는 반복적인 프로세스 자동화 뿐만 아니라 합성 미디어 전반, 프로토타이핑을 위한 도구 제조 및 비즈니스에도 사용될 수 있음
      • notion image
     

    1.2. ChatGPT 학습 원리

    • Generative Model : X to Y (ex. text to text, text to image) ; 입력 데이터로부터 새로운 데이터를 생성하는 모델
    • ChatGPT의 학습 과정
      • Language Modeling, Pretraining : corpus로 학습
      • Instruction Finetuning
      • Reward Model Training
      • Reinforcement Learning
    • 강점 : 복잡한 자연어 문장을 이해하고 적절한 응답 생성, 논리와 지적 능력이 필요한 task 처리
    • 약점 : 할루시네이션, 편견, 속도가 느림
     

    2. Python기초

    2.1. 터미널 명령어

    notion image

    3. OpenAI API

    3.1. OepnAI에서 제공하는 API 종류

    (*강의시점과 현재 조금 다르다.)
    OpenAI Platform
    Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.
    OpenAI Platform
    https://platform.openai.com/
    OpenAI Platform
    • Chat : 대화형 API를 만들 때 용이함
    • GPT best Practices
    • Embeddings : 텍스트를 고정된 벡터로 바꿔주는 것. 해당 벡터값을 활용해서 다양한 활용이 가능(Clustering, Search, Recommendations, Anomaly detection)
    • Speach to text
    • Image generation
    • Fine-Tuning
     

    3.2. Playground

    OpenAI Platform
    Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.
    OpenAI Platform
    https://platform.openai.com/playground?mode=chat
    OpenAI Platform
    • 테스트 환경
    • playground를 사용하려면 API Key발급 필요 (billing 정보 입력)
    • API Reference 페이지에 들어가면 각 파라미터별 설명이 있습니다
    #Completion API 예제 import os import openai openai.api_key = "발급받은 키" response = openai.Completion.create(model="text-davinci-003", #instruction prompt="Say this is a test", #temperature가 클수록 randomness가 높음 - 서로 다른 응답 temperature=0, #응답 길이 제한, key tokenizer기준이라 단어 갯수는 아님 max_tokens=7) print(response)
    #Chat API 예제 import os import openai openai.api_key = "발급받은 키" system_instruction = """ 너는 햄버거 가게 AI비서임. 아래는 햄버거 종류야, 이외의 버거는 없어. 빅맥, 쿼터파운더, 치즈버거 위의 메뉴 말고는 없다고 생각해 """ #bot에게 페르소나를 주는 것 messages = [{"role": "system", "content": system_instruction}] #input을 받아서 gpt의 output출력하는 함수 만들기 def ask(text): user_input = {"role": "user", "content": text} messages.append(user_input) response = openai.ChatCompletion.create( model = "gpt-3.5-turbo", messages = messages) resp = response.to_dict_recursive() bot_text = response['choices'][0]['message']['content'] bot_resp = {'role':'assistant', 'content':bot_text} messages.append(bot_resp) return bot_text while True: user_input = input("user input:") bot_resp = ask(user_input) print('-'*30) print(f'user_input: {user_input}') print(f'bot_resp: {bot_resp}')

    4. AI서비스를 만들기 위해 필요한 라이브러리

    4-1. Fast API란?

    • API를 만들기 위한 파이썬 웹 프레임워크. 빠른 속도가 강점.
    • API는 서비스 요청과 응답을 처리하는 서비스(기능)
    • 찾아보니 wikidocs에 이런 책도 있다 <점프투 FastAPI>
    • 강의에서는 FastAPI Example 따라서 진행함.
      • FastAPI
        FastAPI framework, high performance, easy to learn, fast to code, ready for production
        FastAPI
        https://fastapi.tiangolo.com/#example
        FastAPI
        #설치하고 pip install fastapi pip install "uvicorn[standard]" #main.py만들어서 코드 복붙 from typing import Union from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} @app.get("/items/{item_id}") def read_item(item_id: int, q: Union[str, None] = None): return {"item_id": item_id, "q": q} #실행 uvicorn main:app --reload
     

    4-2. Fast API

    • CRUD(HTTP메소드)
      • HTTP메소드는 웹 클라이언트 ↔ 서버 사이의 통신에 사용됨 ; CRUD작업 수행
      • Create(Post) : 데이터 생성, 데이터를 서버에 추가하기 위해 Post요청
      • Read(Get) : 데이터 조회, 서버에 데이터를 Get요청
      • Update(Put) : 데이터 수정, 기존 데이터 업데이트를 위한 Put요청
      • Delete(Delete) : 데이터 삭제, 서버에서 데이터를 삭제하기 위해 Delete요청
    • Get
    from typing import Union from fastapi import FastAPI app = FastAPI() items = { 0 : {"name" : "bread", "price" : 1000}, 1 : {"name" : "water", "price" : 500} } #path parameter @app.get("/items/{item_id}") def read_item(item_id : int): item = items[item_id] return item @app.get("/items/{item_id}/{key}") def read_item_and_key(item_id : int, key:str): item = items[item_id][key] return item """ http://127.0.0.1:8000/0/name bread가 불러와짐! """ #query parameter @app.get("/item-by-name") def read_item_by_name(name : str): for item_id, item in items.items(): if item['name'] == name: return item return {"error" : "data not found"} """ http://127.0.0.1:8000/item-by-name?name=bread {"name":"bread","price":1000}가 불러와짐! """
    • Post / Update
      • 클라이언트→서버 리소스를 생성하거나 업데이트하기 위해 데이터 보낼 때 사용되는 메서드
      • ex.게시물 작성
      • HTTP메시지 body부분에 담아서 서버로 보냄
      • Get처럼 데이터가 외부적으로 드러나는 건 아니라서 보안이 필요한 부분에 사용됨 (하지만 데이터 암호화 필요함)
    #옵션 부여 from typing import Optional class Item(BaseModel): name: str price: int @app.post("/items/{item_id}") def create_item(item: Item): if item_id in items: return {"error":"there is already existing key."} item[item_id] = item.dict() return {"success": "ok"} class ItemForUpdate(BaseModel): name: Optional[str] price: Optional[int] @app.put("/items/{item_id}") def update_item(item_id: int, item:Item): if item_id not in items: return {"error": f"there is no item id : {item_id}"} if item.name: item[item_id]['name'] = item.name if item.price: item[item_id]['price'] = item.price return {"success" : "ok"}
     
    • Delete
      • @app.delete("/items/{item_id}") def delete_item(item_id: int): items.pop(item_id) return {"success":"ok"}

    Etc. 블로그 콘텐츠 마케팅xGPT

    • 블로그 콘텐츠 작성 자동화
      • 블로그 상단노출 결과를 참고해서 블로그 콘텐츠 제목을 추천받고
      • GPT에게 draft 내용 쓰게 만들기
    • 작업 프로세스
      • 주제선정 > 키워드 조사 및 목표 키워드 선정 > 제목선정 > 글 작성
    BloFlo 서비스 사용기
    • 먼저 키워드 선정
      • notion image
    • 연관 키워드 알려줌 - 볼륨, 난이도, 의도 알려줌.
      • notion image
    • 타겟 키워드를 고르면 관련 제목을 추천해줌
      • notion image
        notion image
        notion image
    • 초안 작성된 파일을 Markdown파일로 받을 수 있는거 매우 센스있다..
      • notion image
    • 소감
      • 응답값 받는데 되게 오래 걸린다..
      • 이분 프롬프트 작성하신 것을 참고해보니.. [Goal] [Requirements] [Output] 이렇게 정확하게 작성해줌
        • notion image
    만드신 분 글 :
    검색 의도를 파악 하여 SEO에 최적화된 컨텐츠 추천 받기 | GPTers 그룹
    지난번 ‘ChatGPT를 활용한 Google SEO 글쓰기 활용 사례 및 경험 공유’에 이어 오늘은 키워드의 의도(intent)를 파악한 SEO 최적화 컨텐츠를 추천 받는 사례를 정리 해보았습니다. 원하는 주제와 키워드를 골랐다면 사람들이 해당 키워드를 어떤 의도로 검색하는지에 대한 검색 의도를 파악 하는것이 정말 중요 합니다. 그래서 이번에는 검색의도를 파악 하여 SEO에 최적화된 컨텐츠를 추천 받는 방법을 정리 해보았습니다. 내용은 ...
    검색 의도를 파악 하여 SEO에 최적화된 컨텐츠 추천 받기 | GPTers 그룹
    https://www.gpters.org/c/contents/seo-11f2d4
    검색 의도를 파악 하여 SEO에 최적화된 컨텐츠 추천 받기 | GPTers 그룹
    서비스 데모 :
    BloFlo(블로플로) - 블로그 작성을 쉽고 편안하게
    구글 SEO에 최적화된 블로그 작성이 어려우셨나요? BloFlo(블로플로)와 함께 누구나 전문가처럼 블로그를 작성할 수 있습니다. 효율적이고 자연스러운 블로그 작성을 경험해보세요.
    BloFlo(블로플로) - 블로그 작성을 쉽고 편안하게
    https://www.bloflo.com/dashboard
    BloFlo(블로플로) - 블로그 작성을 쉽고 편안하게
    구글 SEO에 최적화된 블로그 작성이 어려우셨나요? BloFlo(블로플로)와 함께 누구나 전문가처럼 블로그를 작성할 수 있습니다. 효율적이고 자연스러운 블로그 작성을 경험해보세요.
    BloFlo(블로플로) - 블로그 작성을 쉽고 편안하게
    https://www.bloflo.com/search-intent-analysis
     

    토이 프로젝트 기획해보기

    (끄적끄적 수준..)
    • 대부분의 변호사 블로그에는 본인이 강점으로 내세우고 있는 분야에 대한 Best Practice(승소사례)가 콘텐츠화되어있음.
    • 프로세스
      • 사건번호를 받아옴 → 엘박스에 검색 → 판례 스크랩 → 프롬프트 작성 → GPT가 draft작성 → 중간에 필요한 이미지 Dalle로 생성해서 넣어주거나, 무료 이미지 사이트에서 찾아오도록 함 → Markdown 파일 다운로드 → 최소 수정
    GPT 사용해 본 초안
    • 정제된 포스팅은 아니지만.. 프롬프트를 조정해보면 충분히,, 괜찮은 결과를 얻을 수 있을지도..?😂
    [판례 복붙] [Goal] 위에 판례 내용을 바탕으로 해당 변호사의 승소사례를 담은 블로그 콘텐츠를 작성해 [Requirements] 해당 판례에서 드러나는 변호사의 역량을 특히 강조해 [Output] 소제목은 사건 경위, 변론 전략, 결과 순 개요에 맞게 내용을 작성하고 bullet point로 정리해
    notion image
     
    Share article
    Contents
    1. GPT의 원리와 등장 배경2. Python기초3. OpenAI API4. AI서비스를 만들기 위해 필요한 라이브러리Etc. 블로그 콘텐츠 마케팅xGPT토이 프로젝트 기획해보기

    hollyisyoon

    RSS·Powered by Inblog