본문 바로가기
Natural Language Processing

[ChatGPT] 프롬프트 이용하여 시스템 만들기

by 자몽먹은토끼 2023. 8. 4.
728x90
반응형

코어 수, RAM, GPU, SSD(용량), 크기, 무게, 브랜드, 가격, 목적 등 원하는 사양을 적어주세요

코어수: 4, RAM: 16, SSD: 256이상, 크기: 13~14, 무게: 1.2kg 이하, 브랜드: 삼성, 가격: 100만원 내외, 목적: 인공지능

GPT-3.5
GPT-4

특화 Task AI

  • 특정 태스크에 제한된 사용
  • 고정된 입출력 인터페이스
  • 투자대비 성능 보장 힘듦
  • 자동화/무인화 체계가 마련되어 있지 않다면 적용이 힘듦

대규모 언어모델 (ex. chatGPT)

  • 자연어 처리 기반
  • 대량의 데이터셋으로 기 학습됨
  • 업무효율화에 바로 사용가능
  • 할루세이션 문제??

에이전트 (특화 테스크 AI + 대규모 언어모델)

  • 특화 테스크 AI + 대규모 언어모델 연동

멀티유저, 방문기억, 이미지 

 

 

import gradio as gr  # 그라디오 라이브러리를 불러옵니다.
import random  # 무작위 선택을 위한 라이브러리를 불러옵니다.
import time  # 시간 지연을 위한 라이브러리를 불러옵니다.

def respond(message, chat_history):  # 채팅봇의 응답을 처리하는 함수를 정의합니다.
	# 미리 정의된 응답 중 하나를 무작위로 선택합니다.
    bot_message = random.choice(["어떻게 지내세요?", "좋아해요", "배고파요"])  
    chat_history.append((message, bot_message))  # 채팅 기록에 사용자의 메시지와 봇의 응답을 추가합니다.
    time.sleep(1)  # 응답 간의 시간 지연을 생성합니다. 이는 봇이 실시간으로 답변하고 있는 것처럼 보이게 합니다.
    return "", chat_history  # 수정된 채팅 기록을 반환합니다. 

with gr.Blocks() as demo:  # gr.Blocks()를 사용하여 인터페이스를 생성합니다.
    chatbot = gr.Chatbot(label="채팅창")  # '채팅창'이라는 레이블을 가진 채팅봇 컴포넌트를 생성합니다.
    msg = gr.Textbox(label="입력")  # '입력'이라는 레이블을 가진 텍스트박스를 생성합니다.
    clear = gr.Button("초기화")  # '초기화'라는 레이블을 가진 버튼을 생성합니다.
	
    # 텍스트박스에 메시지를 입력하고 제출하면 respond 함수가 호출되도록 합니다.
    msg.submit(respond, [msg, chatbot], [msg, chatbot]) # 뒤msg비어있음
    # '초기화' 버튼을 클릭하면 채팅 기록을 초기화합니다.
    clear.click(lambda: None, None, chatbot, queue=False)  

demo.launch()  # 인터페이스를 실행합니다.
# 실행하면 사용자는 '입력' 텍스트박스에 메시지를 작성하고 제출할 수 있으며,
# '초기화' 버튼을 통해 채팅 기록을 초기화 할 수 있습니다.

랜덤으로 답이 나옴

0. 3. 사용자

 

5. 챗봇

1.텍스트박스

2.메세지

4. 챗히스토리

 

 

0.  사용자가 문구를 먼저 입력함

1. 그러면 그 문구가 텍스트 박스에 입력되고

2. 메세지에 입력이 됨.

3. 사용자가 보는 화면에서 보여짐

4. 챗 히스토리로 해당 내용이 올라감 (이는 보이지 않음)

5. 챗봇에게 히스토리의 전체 내용을 전달. (> 그래서 이전 내용까지 이미 아는 상태에서 답을 줄 수 있음)

 

 

>> Run Curl Commands Online (reqbin.com)

work_1

모자이크 친 부분은 sk- 부터 개인 API 주소이다.

{
    "warning": "This model version is deprecated. Migrate before January 4, 2024 to avoid disruption of service. Learn more https://platform.openai.com/docs/deprecations",
    "id": "cmpl-7jj0r07RtYUqTNPZoyTVofH8P1h5y",
    "object": "text_completion",
    "created": 1691132145,
    "model": "text-davinci-003",
    "choices": [{
        "text": "\n\n반갑습니다.",
        "index": 0,
        "logprobs": null,
        "finish_reason": "stop"
    }],
    "usage": {
        "prompt_tokens": 14,
        "completion_tokens": 16,
        "total_tokens": 30
    }
}

 

curl https://api.openai.com/v1/completions \ 입력

"model": "text-davinci-003", 모델지정

"prompt_tokens": 14, 입력 토큰

"completion_tokens": 15, 입력한 문장의 토큰 수

 

 

메세지의 구성

  • role : system(ai에게 지시할때 ex. 지시문), user(사용자가 입력), assistance(응답 메세지), function
  • contents
  • name
  • ??

 

work_2
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-private-api" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "system",
        "content": "안녕. 신나는 노래를 불러봐"
      },
      {
        "role": "user",
        "content": "좋은아침!"
      }
    ]
  }'
{
    "id": "chatcmpl-7jj8GdWuCaTungtMObfwsBbzdHF9s",
    "object": "chat.completion",
    "created": 1691132604,
    "model": "gpt-3.5-turbo-0613",
    "choices": [{
        "index": 0,
        "message": {
            "role": "assistant",
            "content": "안녕하세요! 신나는 노래를 불러볼게요. 어떤 노래를 듣고 싶으세요?"
        },
        "finish_reason": "stop"
    }],
    "usage": {
        "prompt_tokens": 39,
        "completion_tokens": 41,
        "total_tokens": 80
    }
}

 

 

 

 

 

systemMessage : 지시문

HumanMessage : 사용자의 채팅

AIMessage : 인공지능의 답

728x90
반응형