2023년 6월 30일 금요일

[ChatGPT] OpenAI API를 사용한 신속한 엔지니어링을 위한 모범 사례

 

OpenAI API를 사용한 신속한 엔지니어링을 위한 모범 사례

 


프롬프트 시작 부분에 명령을 입력하고 ### 또는 """를 사용하여 명령과 컨텍스트를 구분하기

별로인 예시 ❌:

가장 중요한 사항의 글머리 기호 목록으로 아래 텍스트를 요약합니다. 

{여기에 텍스트 입력}

좋은 예시 ✅:

가장 중요한 사항의 글머리 기호 목록으로 아래 텍스트를 요약합니다.

텍스트: """ 
{여기에 텍스트 입력} 
"""

원하는 컨텍스트, 결과, 길이, 형식, 스타일 등에 대해 가능한 한 구체적이고 설명적이며 상세하게 작성하십시오.

문맥, 결과, 길이, 형식, 스타일 등에 대해 구체적으로 설명하십시오.

별로인 예시 ❌:

OpenAI에 대한 시를 써보세요.

좋은 예시 ✅:

{유명한 시인}의 스타일로 최근 DALL-E 제품 출시(DALL-E는 이미지 ML 모델에 대한 텍스트임)에 초점을 맞춰 OpenAI에 대해 영감을 주는 짧은 시를 작성합니다.

예제를 통해 원하는 출력 형식을 표현합니다( 예제 1 , 예제 2 ).

별로인 예시 ❌:

아래 텍스트에 언급된 엔터티를 추출합니다. 회사 이름, 사람 이름, 특정 주제 및 테마의 4가지 엔터티 유형을 추출합니다. 

텍스트: {텍스트}
보여주고 말하세요 - 특정 형식 요구 사항을 보여줄 때 모델이 더 잘 반응합니다. 또한 프로그래밍 방식으로 여러 출력을 안정적으로 구문 분석하기가 더 쉽습니다.

좋은 예시 ✅:

아래 텍스트에 언급된 중요한 개체를 추출합니다. 먼저 모든 회사 이름을 추출한 다음 모든 사람 이름을 추출한 다음 콘텐츠에 맞는 특정 주제를 추출하고 마지막으로 일반적으로 가장 중요한 주제를 추출합니다. 원하는 

형식: 
회사 이름: <comma_separated_list_of_company_names> 
사람 이름: -||- 
특정 주제: -||- 
일반 테마: -||- 

텍스트: {text}

zero-shot으로 시작한 다음 few-shot, 둘 다 작동하지 않은 다음 미세 조정

✅ 제로샷

아래 텍스트에서 키워드를 추출합니다. 

텍스트: {text} 

키워드:

✅ Few-shot - 몇 가지 예를 제공합니다.

아래 해당 텍스트에서 키워드를 추출합니다. 

텍스트 1: Stripe는 웹 개발자가 결제 처리를 웹사이트 및 모바일 애플리케이션에 통합하는 데 사용할 수 있는 API를 제공합니다. 
키워드 1: 스트라이프, 결제 처리, API, 웹 개발자, 웹사이트, 모바일 애플리케이션 
## 
텍스트 2: OpenAI는 텍스트를 이해하고 생성하는 데 매우 뛰어난 최첨단 언어 모델을 훈련했습니다. 당사의 API는 이러한 모델에 대한 액세스를 제공하며 언어 처리와 관련된 거의 모든 작업을 해결하는 데 사용할 수 있습니다. 
키워드 2: OpenAI, 언어 모델, 텍스트 처리, API. 
## 
텍스트 3: {text} 
키워드 3:



"모호한" 부정확한 설명을 줄입니다.

별로인 예시 ❌:

이 제품에 대한 설명은 상당히 짧고, 몇 문장으로만 작성해야 하며, 너무 많지 않아야 합니다.

좋은 예시 ✅:

이 제품을 설명하려면 3-5 문장 단락을 사용하십시오.

하지 말라고 하지 말고 해야 할 말을 하라

별로인 예시 ❌:

다음은 에이전트와 고객 간의 대화입니다. 사용자 이름이나 암호를 묻지 마십시오. 반복하지 마십시오. 

고객: 내 계정에 로그인할 수 없습니다. 
대리인:

좋은 예시 ✅:

다음은 에이전트와 고객 간의 대화입니다. 상담원은 PII와 관련된 질문을 삼가하면서 문제를 진단하고 해결책을 제안하려고 시도합니다. 사용자 이름이나 비밀번호와 같은 PII를 요청하는 대신 www.samplewebsite.com/help/faq 도움말 문서 

고객: 내 계정에 로그인할 수 없습니다. 
대리인:

특정 코드 생성 - "leading words(리딩 단어)"를 사용하여 모델을 특정 패턴으로 이동

별로인 예시 ❌:

# 간단한 파이썬 함수를 작성하세요. 
# 1. 마일로 숫자를 물어보세요. 
# 2. 마일을 킬로미터로 변환합니다.

아래의 이 코드 예제에서 "import" 힌트를 모델에 추가하면 Python으로 작성을 시작해야 합니다. (마찬가지로 "SELECT"는 SQL 문의 시작에 대한 좋은 힌트입니다.)

좋은 예시 ✅:

# 간단한 파이썬 함수 작성 
# 1. 마일로 숫자를 물어보세요 
# 2. 마일을 킬로미터로 변환 가져 

import

매개변수

일반적으로 모델 출력을 변경하는 데 가장 일반적으로 사용되는 매개 변수는 model 와 입니다. temperature

  1. model- 고성능 모델은 더 비싸고 대기 시간이 더 깁니다.

  2. temperature- 모델이 가능성이 적은 토큰을 얼마나 자주 출력하는지 측정합니다. 가 높을수록 temperature출력이 더 무작위적이며 일반적으로 창의적입니다. 그러나 이것은 "진실성"과 동일하지 않습니다. 데이터 추출 및 진실된 Q&A와 같은 대부분의 사실적 사용 사례의 경우 temperature0이 가장 좋습니다.

  3. max_tokens( 최대 길이) - 출력 길이를 제어하지 않고 토큰 생성을 위한 하드 컷오프 제한. 이상적으로는 이 제한에 자주 도달하지 않을 것입니다. 모델이 완료되었다고 생각하거나 정의한 중지 시퀀스에 도달하면 모델이 중지되기 때문입니다.

  4. stop(정지 시퀀스) - 생성될 때 텍스트 생성을 중지시키는 문자(토큰) 집합입니다.


원문: https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api


 #NE-ILGI #AIDiary #SharePrompts #ChatGPT #DiaryApp




[ChatGPT] Prompt Engineering Guide

Prompt Engineering Guide



프롬프트 엔지니어링은 다시 말해서, '어떻게 하면 컴퓨터 언어 모델에게 우리가 원하는 답변을 제공하게 할 수 있는지'에 대한 과학입니다. 구글에 검색어를 입력하거나, 시리에게 질문을 하는 것을 상상해 보세요. 이런 경우, 우리가 원하는 정보를 얻기 위해 어떤 단어를 사용할지, 어떤 방식으로 질문할지 결정해야 합니다. 이것이 바로 프롬프트입니다. 그리고 이런 프롬프트를 더 잘 만드는 방법에 대한 학문이 바로 '프롬프트 엔지니어링'입니다.


프롬프트 엔지니어링은 다양한 애플리케이션과 연구 주제에 언어 모델(LM)을 효율적으로 사용할 수 있도록 프롬프트를 개발하고 최적화하는 비교적 새로운 분야입니다. 프롬프트 엔지니어링 기술은 대규모 언어 모델(LLM)의 기능과 한계를 더 잘 이해하는 데 도움이 됩니다.


연구자들은 프롬프트 엔지니어링을 사용하여 질문 답변 및 산술 추론과 같은 일반적이고 복잡한 다양한 작업에서 LLM의 역량을 향상시킵니다. 개발자는 프롬프트 엔지니어링을 사용하여 LLM 및 기타 도구와 인터페이스하는 강력하고 효과적인 프롬프트 기술을 설계합니다.


프롬프트 엔지니어링은 단순히 프롬프트를 설계하고 개발하는 것만이 아닙니다. 프롬프트 엔지니어링은 LLM과 상호 작용하고 개발하는 데 유용한 다양한 스킬과 기법을 포괄합니다. 프롬프트 엔지니어링은 LLM과 인터페이스하고, 빌드하고, LLM의 기능을 이해하는 데 중요한 기술입니다. 신속한 엔지니어링을 사용하여 LLM의 안전성을 개선하고 도메인 지식 및 외부 도구로 LLM을 보강하는 등 새로운 기능을 구축할 수 있습니다.



LLM 설정

프롬프트로 작업할 때는 API를 통해 또는 직접 LLM과 상호 작용합니다. 몇 가지 매개변수를 구성하여 프롬프트에 대해 다양한 결과를 얻을 수 있습니다.


Max Tokens


GPT 모델에게 한 번에 얼마나 많은 토큰을 생성하도록 할지를 지정하는 매개변수입니다. 여기서 '토큰'이란, GPT 모델이 텍스트를 이해하고 생성하는 기본 단위를 말합니다. 토큰은 글자, 단어, 혹은 문장 부호 등 다양한 형태를 가질 수 있습니다.


예를 들어, 'max tokens' 값이 50으로 설정되면, 모델은 한 번에 최대 50개의 토큰만 생성합니다. 이 값이 크면 클수록 모델은 더 긴 텍스트를 생성할 수 있지만, 계산 비용도 증가합니다. 반대로 이 값이 작으면 작을수록 모델은 더 짧은 텍스트를 생성하지만, 빠른 속도로 응답을 생성할 수 있습니다.


이 매개변수는 모델의 출력을 제한하는 방법 외에도, 사용자의 입력을 제한하는 데에도 사용됩니다. 이는 모델이 너무 많은 정보를 한 번에 처리하지 못하게 하여, 처리 속도를 유지하고 메모리 부하를 최소화하는 데 도움이 됩니다.


'max tokens' 값을 결정할 때는 원하는 응답의 길이와 처리 시간, 그리고 사용 가능한 자원을 고려해야 합니다. 만약 복잡하고 상세한 답변이 필요하다면 'max tokens' 값을 높게 설정하면 되지만, 간단한 답변이면 이 값을 낮게 설정해도 충분할 것입니다. 이렇게 적절한 설정을 통해, 우리는 모델의 성능을 최적화하고 필요한 정보를 효과적으로 얻을 수 있습니다.


Temperature 

ChatGPT나 다른 GPT 계열의 모델들에서 "temperature"는 모델의 출력의 다양성을 제어하는 하이퍼파라미터입니다. temperature 값은 0 이상의 값을 가집니다.


온도는 다음과 같이 작동합니다:


  • 온도 값이 높으면 (예: 1.0 또는 그 이상), 모델은 더 다양하고 무작위적인 답변을 생성합니다. 이것은 출력의 엔트로피를 높이는 효과가 있습니다.


  • 반면에, 온도 값이 낮으면 (예: 0.1), 모델은 더욱 예측 가능하고 일관된 답변을 생성합니다. 이는 출력의 엔트로피를 낮추는 효과가 있습니다.


즉, 높은 온도 값은 모델이 더 많은 리스크를 감수하며 다양한 답변을 제공하도록 만들고, 낮은 온도 값은 모델이 더 안전하고 일관된 답변을 제공하도록 만듭니다.


이러한 기능은 GPT 모델을 사용하여 다양한 응용 프로그램에서 출력의 다양성을 조절하는 데 유용하게 사용될 수 있습니다. 예를 들어, 창의적인 작성 작업에는 높은 온도 값이 적합할 수 있으며, 비즈니스 보고서 또는 공식적인 통신에는 낮은 온도 값이 적합할 수 있습니다.


간단히 말해, 설정 온도가 높아지면 무작위성이 증가하여 더 다양하고 창의적인 결과가 나올 수 있습니다. 본질적으로 다른 가능한 토큰의 가중치를 높이는 것입니다. 

적용 측면에서, 사실 기반 QA와 같은 작업에는 더 사실적이고 간결한 응답을 장려하기 위해 낮은 온도 값을 사용하는 것이 좋습니다. 시 창작이나 기타 창의적인 작업의 경우 온도 값을 높이는 것이 유리할 수 있습니다.


Top_p 

출력의 다양성을 제어하는 또 다른 하이퍼파라미터입니다. 이는 "nucleus sampling" 또는 "top-p sampling"으로도 알려져 있습니다.


Top-p sampling은 모델이 단어를 선택할 확률 분포에서 가장 가능성이 높은 단어들만을 고려하는 방식입니다. "top_p" 값은 0과 1 사이의 값을 가지며, 이 값이 p인 부분 집합을 생성하려고 합니다. 이 부분 집합은 전체 확률 분포의 가장 가능성이 높은 단어들을 포함하며, 이 단어들의 누적 확률이 p를 초과하게 됩니다.


예를 들어, top_p 값이 0.9라면, 모델은 각 단계에서 가능성 있는 단어들의 부분집합 중 확률이 누적해서 0.9가 되는 부분까지만 고려하게 됩니다. 이렇게 하면 모델의 출력이 다양해지지만, 아무런 관련이 없거나 무의미한 단어를 포함하는 리스크가 증가합니다.


Top-p sampling은 temperature와 같이 사용되어 출력의 다양성과 일관성을 동시에 제어할 수 있습니다. 이 둘의 차이점은, temperature는 확률 분포 전체를 "평활화"하거나 "선명하게"하는 반면, top_p는 가능성이 높은 단어의 집합을 제한함으로써 확률 분포를 조정한다는 것입니다.


샘플링 기법인 top_p를 사용하면 모델이 응답을 생성할 때 얼마나 결정론적인지 제어할 수 있습니다. 정확하고 사실적인 답변을 찾고 있다면 이 값을 낮게 유지하세요. 보다 다양한 응답을 원한다면 더 높은 값으로 높입니다.


일반적으로 두 가지 모두 변경하지 말고 한 가지만 변경하는 것이 좋습니다.


몇 가지 기본 예제를 시작하기 전에 사용하는 LLM 버전에 따라 결과가 달라질 수 있다는 점을 염두에 두세요.




#NE-ILGI #AIDiary #SharePrompts #ChatGPT #DiaryApp






2023년 6월 28일 수요일

ChatGPT 앱 소개 - AI가 함께하는 일기 작성, NE-ILGI 앱

 

NE-ILGI 앱, 일기 작성의 새로운 패러다임📝

NE-ILGI는 혁신적인 방식으로 일기를 쓰는 새로운 경험을 제공하는 앱입니다. 일기를 쓰면, 이 앱은 마치 가장 친한 친구, 시인, 랩퍼, 또는 열렬한 독자처럼 당신의 이야기에 반응합니다. 아이콘과 배경 이미지와 함께 일기를 더욱 색다르고 살아있게 만들어주는 다양한 테마가 지속적으로 업데이트되고 있습니다. 이를 통해 일기 작성이 단순히 기록하는 행위에서 벗어나, 창작의 놀이터로 변모할 수 있습니다.




여러분만의 AI 친구, ChatGPT와의 대화 🗣️

NE-ILGI는 단순한 일기 앱을 넘어, 사용자와 대화를 나누는 AI 친구인 ChatGPT를 포함하고 있습니다. AI의 발전을 통해 이제 우리는 단지 사람끼리만 아니라, 기계와도 의미있는 대화를 나눌 수 있게 되었습니다. ChatGPT와의 대화를 통해, 새로운 아이디어를 얻거나 일기 작성에 대한 새로운 영감을 받을 수 있습니다.


프롬프트를 공유하고, 성장하는 글쓰기 커뮤니티 🌱

NE-ILGI에서는 프롬프트를 공유하며, 일기를 쓰는 기쁨을 나누는 커뮤니티를 형성하고 있습니다. 다양한 프롬프트를 통해 더 깊고 풍부한 이야기를 만들어갈 수 있으며, 이를 통해 단순한 글쓰기에서 한 걸음 더 나아가, 창작의 즐거움을 느낄 수 있습니다. 이러한 경험은 글쓰기를 좋아하는 모든 사람들에게 큰 행복을 선사할 것입니다.


일기 쓰기의 신세계, NE-ILGI로의 초대 💌

일기 쓰는 것이 지루하거나 답답하다고 느껴질 때, NE-ILGI 앱을 통해

새로운 접근법을 시도해보세요. 우리의 일상 이야기에 응답하는 AI 친구, 다양한 테마의 아이콘과 배경 이미지, 그리고 성장하는 글쓰기 커뮤니티는 모두 여러분의 일기 작성을 풍요롭게 만들어 줄 것입니다.


함께해요, NE-ILGI에서의 여행을 시작해요 🚀

NE-ILGI 앱은 여러분의 일상에 창조적인 에너지와 생동감을 불어넣을 것입니다. 일기를 쓰는 새로운 방법을 경험하고, AI 친구와 함께하는 새로운 대화를 즐기며, 프롬프트를 공유하는 글쓰기 커뮤니티의 일원이 되어 보세요. 이 모든 것이 가능한 곳, 바로 NE-ILGI입니다.




블로그 게시물 슬러그: ai와-함께하는-일기-작성-ne-ilgi

메타 설명: NE-ILGI는 AI와 함께하는 일기 작성 앱입니다. 다양한 테마의 기분 아이콘, 배경 이미지와 AI 친구인 ChatGPT, 프롬프트 공유 기능이 특징입니다. 일상에 창조적인 에너지를 불어넣어 보세요.


#NE-ILGI #AIDiary #SharePrompts #ChatGPT #DiaryApp

2023년 6월 1일 목요일

Xcode 단축키

Xcode 단축키 모음


1. 기본적인 단축키

    • ⌥ + ⇧ + ←(→) : 단어 단위 블럭
    • ⌘ + ⇧ + ←(→) : 시작점부터 끝까지 블럭
    • ⌘ + A : 전체 선택
    • ⌘ + Z : 되돌리기
    • ⌘ + ⇧ + Z : 앞으로 되돌리기
    • ⌘ + X : 자르기
    • ⌘ + C : 복사
    • ⌘ + V : 붙여넣기
    • ⌘ + ⌫ : 해당 라인 지우기
    • ⌘ + ←(→, ↑, ↓) : 해당 방향의 끝으로 이동
    • ⌘ + W : 현재 창 닫기


2. Xcode 단축키

2-1. 네비게이션

    • ⌘ + 0 : 좌측 네비게이션 show/hide
    • ⌘ + 1~9 : 좌측 네비게이션 이동 (순서대로)
    • ⌘ + ⌥ + 0 : 우측 네비게이션 show/hide
    • ⌘ + ⌥ + 1~4 : 우측 네비게이션 이동 (순서대로)
    • ⌘ + ⇧ + Y : 하단 로그창 show/hide
    • ⌘ + ⇧ + J : 현재 파일 좌측 네비게이션에 표시

2-2. 빌드

  • ⌘ + ⇧ + K : 프로젝트 클린
  • ⌘ + B : 프로젝트 빌드
  • ⌘ + R : 프로젝트 실행
  • ⌘ + . : 실행중인 앱 강제 종료

2-3. 검색

    • ⌘ + F : 현재 창 검색
    • ⌘ + ⌥ + F : 현재 창 검색 & 대치
    • ⌘ + Shift + O : 프로젝트 내 파일, 클래스, 함수 검색
    • ⌘ + Shift + F : 프로젝트 전체 검색

2-4. 코드 편집

    • ⌃ + I : 코드 정렬
    • ⌘ + '+'('-') : 폰트 사이즈 업/다운
    • ⌘ + / : 해당 라인 주석
    • ⌘ + [ ] : 해당 방향 들여쓰기
    • ⌘ + ⌃ + E : 변수/함수명 한번에 바꾸기
    • ⌘ + ⌃ + J : 함수 정의된 곳으로 이동
    • ⌘ + ⌥ + ←(→) : 코드 접기/펼치기
    • ⌘ + ⌥ + [] : 행 단위 위/아래 이동
    • ⌘ + ⌃ + ↑(↓) : header/main 파일 이동(objc에서 유용합니다.)
    • ⌘ + ⇧ + [ ] : 열려있는 페이지 왼쪽, 오른쪽 방향으로 이동

2-5. 디버깅

    • ⌘ + \ : 브레이크 포인트 설정/해제
    • ⌘ + Y : 브레이크 포인트 비활성화/활성화
    • F6 : 다음 라인 (Step Over)
    • F7 : 현재 라인 내부 진입 (Step Into)
    • F8 : 현재 함수에서 나가기 (Step Out)

2-6. 시뮬레이터

    • ⌘ + L : 잠금
    • ⌘ + S : 스크린샷
    • ⌘ + ⌃ + C : 클립보드에 스크린샷 저장
    • ⌘ + ←(→) : 화면 방향 전환
    • ⌘ + ⇧ + H : 홈 화면 이동
    • ⌥ + Click : 멀티 터치

2-7. 기타

    • ⌘ + ⇧ + 0 : Apple Documentaion 오픈
    • ⌘ + ⇧ + 2 : Device & Simulator 오픈
    • ⌘ + ⌥ + ⇧ + O : Organizer 오픈


3. 마우스를 이용한 단축키

  • Control + 마우스 클릭: 컨텍스트 메뉴를 보여줍니다. 
  • Control + Shift + 마우스 클릭: 관련 메서드나 변수를 즉시 선택합니다. 
  • Control + Command + 마우스 클릭: 정의로 이동합니다. 
  • Option + 마우스 클릭: 빠른 도움말을 보여줍니다