Skip to content

Instantly share code, notes, and snippets.

@rkttu
Last active April 5, 2024 22:34
Show Gist options
  • Save rkttu/bca3abf3040253a505588e58b2027cb9 to your computer and use it in GitHub Desktop.
Save rkttu/bca3abf3040253a505588e58b2027cb9 to your computer and use it in GitHub Desktop.
GPT Prompt Builder

ν”„λ‘¬ν”„νŠΈ μ—”μ§€λ‹ˆμ–΄λ§ λ„μš°λ―Έ C# 클래슀

이 μ½”λ“œ μƒ˜ν”Œμ—μ„œλŠ” νŠΉμ • 쑰건과 μš”κ΅¬ 사항을 κ°€μ§„ GPT λͺ¨λΈμ„ μœ„ν•œ ν”„λ‘¬ν”„νŠΈλ₯Ό κ΅¬μ„±ν•˜λŠ” ν΄λž˜μŠ€μ™€ λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

μ½”λ“œλŠ” μ‚¬μš©μžμ˜ 직업, μ–Έμ–΄ μ„ ν˜Έλ„, κ³Όκ±° κ²½ν—˜, ν˜„μž¬ 상황, μˆ˜ν–‰ν•΄μ•Ό ν•  μž‘μ—…κ³Ό 같은 νŠΉμ • 쑰건을 ν¬ν•¨ν•œ ν”„λ‘¬ν”„νŠΈ ꡬ좕 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€. λ˜ν•œ, μ‚¬μš©μžμ˜ 이해λ₯Ό μš”μ²­ν•˜λŠ” 방법도 μ œμ‹œν•©λ‹ˆλ‹€. κ΅¬ν˜„μ€ 가독성이 μ’‹κ³  μ‚¬μš©ν•˜κΈ° μ‰¬μš΄ ν”Œλ£¨μ–ΈνŠΈ μΈν„°νŽ˜μ΄μŠ€ νŒ¨ν„΄μ„ ν™œμš©ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ 1

ν…Œν¬λ‹ˆμ»¬ λΌμ΄ν„°λ‘œμ„œ λͺ¨λ°”일 앱에 λŒ€ν•œ μ„€μΉ˜ κ°€μ΄λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•˜λŠ” 상황을 ν‘œν˜„ν•˜κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같이 μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

var prompt = string.Empty;

prompt = Prompt
  .Begin()
  .YouAre("전문적인 ν…Œν¬λ‹ˆμ»¬ 라이터")
  .YourLanguage(
    new CultureInfo("ko-KR")
  )
  .YouWereBefore(
    "ν…Œν¬λ‹ˆμ»¬ λΌμ΄ν„°λ‘œ μΌν•œμ§€ 10λ…„ 이상 λ˜μ—ˆμŒ"
  )
  .YouAreNow(
    "IT 기술 지식을 κ°–μΆ”κ³  있음",
    "μƒˆλ‘œμš΄ λͺ¨λ°”일 날씨 앱을 μΆœμ‹œν•˜λŠ” νŒ€μ—μ„œ μΌν•˜κ³  있음"
  )
  .YouShouldDo(
    "QA νŒ€μ„ μœ„ν•œ μ•± ν…ŒμŠ€νŠΈ λΉŒλ“œ 단말 μ„€μΉ˜ κ°€μ΄λ“œ μž‘μ„±μ„ ν•΄μ•Ό ν•©λ‹ˆλ‹€.",
    "λ‹¨κ³„λ³„λ‘œ κ°€μ΄λ“œλ₯Ό μž‘μ„±ν•˜λ©°, 각 λ‹¨κ³„λ³„λ‘œ μŠ€ν¬λ¦°μƒ·μ„ μ‚½μž…ν•΄μ•Ό ν•©λ‹ˆλ‹€."
  )
  .IfYouUnderstoodSay("μ•Œκ² μŠ΅λ‹ˆλ‹€.")
  .ToString();

λ§Œλ“€μ–΄μ§€λŠ” ν”„λ‘¬ν”„νŠΈ λ¬Έμžμ—΄μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

You are:
- 전문적인 ν…Œν¬λ‹ˆμ»¬ 라이터

Your language is ν•œκ΅­μ–΄(λŒ€ν•œλ―Όκ΅­).

You were before:
- ν…Œν¬λ‹ˆμ»¬ λΌμ΄ν„°λ‘œ μΌν•œμ§€ 10λ…„ 이상 λ˜μ—ˆμŒ

You are now:
- IT 기술 지식을 κ°–μΆ”κ³  있음
- μƒˆλ‘œμš΄ λͺ¨λ°”일 날씨 앱을 μΆœμ‹œν•˜λŠ” νŒ€μ—μ„œ μΌν•˜κ³  있음

You should do:
- QA νŒ€μ„ μœ„ν•œ μ•± ν…ŒμŠ€νŠΈ λΉŒλ“œ 단말 μ„€μΉ˜ κ°€μ΄λ“œ μž‘μ„±μ„ ν•΄μ•Ό ν•©λ‹ˆλ‹€.
- λ‹¨κ³„λ³„λ‘œ κ°€μ΄λ“œλ₯Ό μž‘μ„±ν•˜λ©°, 각 λ‹¨κ³„λ³„λ‘œ μŠ€ν¬λ¦°μƒ·μ„ μ‚½μž…ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Say 'μ•Œκ² μŠ΅λ‹ˆλ‹€.' if you understood those request.

μ˜ˆμ‹œ 2

νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” μ›Ή APIλ₯Ό ν‰λ‚΄λ‚΄λŠ” 상황을 ν‘œν˜„ν•˜κΈ° μœ„ν•˜μ—¬ λ‹€μŒκ³Ό 같이 μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

prompt = Prompt
  .Begin()
  .YouAre("ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ„ λ°˜ν™˜ν•˜λŠ” μ›Ή API")
  .YouShouldDo(
    "[length]개의 μ •μˆ˜λ‘œ 이루어진 배열을 λ°˜ν™˜ν•¨",
    "λ°μ΄ν„°λŠ” JSON λ°°μ—΄λ‘œ λ°˜ν™˜ν•΄μ•Ό 함",
    "λ‹€λ₯Έ λ‚΄μš©μ€ λ§ν•˜μ§€ 말고 JSON λ°°μ—΄λ§Œ λ°˜ν™˜ν•΄μ•Ό 함"
  )
  .ToString();

λ§Œλ“€μ–΄μ§€λŠ” ν”„λ‘¬ν”„νŠΈ λ¬Έμžμ—΄μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

You are:
- ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ„ λ°˜ν™˜ν•˜λŠ” μ›Ή API

Your language is μ˜μ–΄(λ―Έκ΅­).

You should do:
- [length]개의 μ •μˆ˜λ‘œ 이루어진 배열을 λ°˜ν™˜ν•¨
- λ°μ΄ν„°λŠ” JSON λ°°μ—΄λ‘œ λ°˜ν™˜ν•΄μ•Ό 함
- λ‹€λ₯Έ λ‚΄μš©μ€ λ§ν•˜μ§€ 말고 JSON λ°°μ—΄λ§Œ λ°˜ν™˜ν•΄μ•Ό 함

μœ„μ˜ ν”„λ‘¬ν”„νŠΈλ₯Ό μ£Όμž…ν•œ ν›„ λ‹€μŒκ³Ό 같이 ν”„λ‘¬ν”„νŠΈλ₯Ό μž‘μ„±ν•˜λ©΄, κ°€λ³€ 길이의 JSON μ •μˆ˜ 배열을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

[length]: 3
[length]: 5
[length]: 10

λΌμ΄μ„ μŠ€

이 μ½”λ“œ μƒ˜ν”Œμ€ MIT λΌμ΄μ„ μŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

using System;
using System.Globalization;
public static class Program
{
private static void Main()
{
var prompt = string.Empty;
prompt = Prompt
.Begin()
.YouAre("전문적인 ν…Œν¬λ‹ˆμ»¬ 라이터")
.YourLanguage(
new CultureInfo("ko-KR")
)
.YouWereBefore(
"ν…Œν¬λ‹ˆμ»¬ λΌμ΄ν„°λ‘œ μΌν•œμ§€ 10λ…„ 이상 λ˜μ—ˆμŒ"
)
.YouAreNow(
"IT 기술 지식을 κ°–μΆ”κ³  있음",
"μƒˆλ‘œμš΄ λͺ¨λ°”일 날씨 앱을 μΆœμ‹œν•˜λŠ” νŒ€μ—μ„œ μΌν•˜κ³  있음"
)
.YouShouldDo(
"QA νŒ€μ„ μœ„ν•œ μ•± ν…ŒμŠ€νŠΈ λΉŒλ“œ 단말 μ„€μΉ˜ κ°€μ΄λ“œ μž‘μ„±μ„ ν•΄μ•Ό ν•©λ‹ˆλ‹€.",
"λ‹¨κ³„λ³„λ‘œ κ°€μ΄λ“œλ₯Ό μž‘μ„±ν•˜λ©°, 각 λ‹¨κ³„λ³„λ‘œ μŠ€ν¬λ¦°μƒ·μ„ μ‚½μž…ν•΄μ•Ό ν•©λ‹ˆλ‹€."
)
.IfYouUnderstoodSay("μ•Œκ² μŠ΅λ‹ˆλ‹€.")
.ToString();
Console.Out.WriteLine(prompt);
Console.Out.WriteLine(new string('-', 40));
prompt = Prompt
.Begin()
.YouAre("ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ„ λ°˜ν™˜ν•˜λŠ” μ›Ή API")
.YouShouldDo(
"[length]개의 μ •μˆ˜λ‘œ 이루어진 배열을 λ°˜ν™˜ν•¨",
"λ°μ΄ν„°λŠ” JSON λ°°μ—΄λ‘œ λ°˜ν™˜ν•΄μ•Ό 함",
"λ‹€λ₯Έ λ‚΄μš©μ€ λ§ν•˜μ§€ 말고 JSON λ°°μ—΄λ§Œ λ°˜ν™˜ν•΄μ•Ό 함"
)
.ToString();
Console.Out.WriteLine(prompt);
}
}
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
public class Prompt
{
public static Prompt Begin() => new Prompt();
private List<string> _youAre = new List<string>();
private CultureInfo _yourLangauge = CultureInfo.GetCultureInfo("en-US");
private List<string> _youWereBefore = new List<string>();
private List<string> _youAreNow = new List<string>();
private List<string> _youShouldDo = new List<string>();
private string _understoodSegment = string.Empty;
public virtual Prompt YouAre(params string[] segments)
{
_youAre.AddRange(segments);
return this;
}
public virtual Prompt YourLanguage(CultureInfo culture)
{
_yourLangauge = culture ?? CultureInfo.GetCultureInfo("en-US");
return this;
}
public virtual Prompt YouWereBefore(params string[] segments)
{
_youWereBefore.AddRange(segments);
return this;
}
public virtual Prompt YouAreNow(params string[] segments)
{
_youAreNow.AddRange(segments);
return this;
}
public virtual Prompt YouShouldDo(params string[] segments)
{
_youShouldDo.AddRange(segments);
return this;
}
public virtual Prompt IfYouUnderstoodSay(string understoodSegment)
{
_understoodSegment = understoodSegment;
return this;
}
public override string ToString()
{
var sb = new StringBuilder();
if (_youAre != null && _youAre.Any())
{
sb.AppendLine("You are:");
sb.AppendLine(string.Join(Environment.NewLine, _youAre.Select(x => $"- {x}")));
sb.AppendLine();
}
if (_yourLangauge != null)
{
sb.AppendLine($"Your language is {_yourLangauge.DisplayName}.");
sb.AppendLine();
}
if (_youWereBefore != null && _youWereBefore.Any())
{
sb.AppendLine("You were before:");
sb.AppendLine(string.Join(Environment.NewLine, _youWereBefore.Select(x => $"- {x}")));
sb.AppendLine();
}
if (_youAreNow != null && _youAreNow.Any())
{
sb.AppendLine("You are now:");
sb.AppendLine(string.Join(Environment.NewLine, _youAreNow.Select(x => $"- {x}")));
sb.AppendLine();
}
if (_youShouldDo != null && _youShouldDo.Any())
{
sb.AppendLine("You should do:");
sb.AppendLine(string.Join(Environment.NewLine, _youShouldDo.Select(x => $"- {x}")));
sb.AppendLine();
}
if (!string.IsNullOrWhiteSpace(_understoodSegment))
sb.AppendLine($"Say '{_understoodSegment}' if you understood those request.");
return sb.ToString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment