์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array ๊ฐ์ฒด
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journey๐ณ๐
[6] 241106 Notion, Prompt Engineering [Goorm All-In-One Pass! AI Project Master - 4th Session, Day 6] ๋ณธ๋ฌธ
[6] 241106 Notion, Prompt Engineering [Goorm All-In-One Pass! AI Project Master - 4th Session, Day 6]
yjyuwisely 2024. 11. 6. 09:00241106 Wed 6th class
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
ChatGPT ํ์ฉ
ํ๋กฌํํธ ์์ง๋์ด๋ง ์ค์: ์ฝ๋ ๋ชฐ๋ผ๋ ๋ง๋ฆ
ChatGPT, Claude ์ ๋ ์์กดX
AI ์ฌ์ฉ, ์ฌ์ฉX ์ฐจ์ด๊ฐ ์ปค์ง๋ค
๊ณ์ ๊ต์ก ๋ฐ๊ณ ๊ณต๋ถํด์ผํ๋ค ์๊น์ํ๋ฉด X
๋ฐ์๊ฒ, ์ด์ฌํ๊ฐ ํญ์ ์ข์ ๊ฑด X
ํฌ์ํ๋ ์๊ฐ -> ๋์ ๋ฐ์ , ์
๋ฌด ๋ฐ์
๋๋ง ๋ณด๋ฉด ์ค๋ ๋ชป๊ฐ
์ง์ ์ด ์์ด์ง๊ณ ์ผ์ด ๋ ์ ์๋ค ๊ณ ์งX
๋ ๋ฐ๋์ ์ด๊ฑธ ํด์ผํ๋คX
์์๊ฐ ๋๋ ๋ถ์ผ๋ก ์ด์ด๋๋ค, ํฌ์ํด์ ๊ฐ์น๊ฐ ์์ ๋ถ์ผ๋ก ๊ฐ๋ค
์ ํ๋ ๊ฑธ AI๋ก ํ์ฉํด์ ๊ทธ ๋ถ์ผ๋ก ๊ฐ ์ ์๋ค.
๊ฐ์: ์ด๊ธ์ ๊ฐ์๊ฐ ๋ง๋ค. ์์O
๋๋ฌด ์๊ฐX (๊ฐ์ ๋ฑ)
ํ์ฌ๊ฐ์ ๊ณต๋ถ, ์ง์ฅ์์ ์ผ ์ ํ๋ฉด ๋ค ๋ชจ๋ฅด๋ ๊ฑฐ๋ค
ํธํ ์ชฝ์ผ๋ก ๊ฐ๋ฉด X
๋
ธ์ฝ๋ฉ, ๋ก์ฝ๋ฉ X, ๋๋ก๋ ์ฝ๋ฉ์ ํด์ ๋ง๋๋ ์ฌ๋์ด ์์ด์ผ ํ๋ค
AI๊ฐ ์ฃผ๋๊ถ X, ์ฌ๋: ์ปจํธ๋กค
๊ตญ์ด๋ฅผ ์ ํ๋ค -> AI์๊ฒ ์ ์ ๋ฌ -> ํ๋กฌํํธ ์์ง๋์ด๋ง์ ์ ํ๋ค.
2024๋ 11์ 6์ผ ์ค๋์ ์ด์๋ฅผ ๊ฒ์ํด์ ์๋ ค์ฃผ๋ ด.
1๋ 6๊ฐ์ ์ด์ ์ธ ๊ฒ ๊ฐ๋ค -> ๊ตฌ๋ !
๋ ผ๋ฌธ์ ์ค์์ ํ๋ ๊ณณ์ด๋ผ๋ฉด ๋ ผ๋ฌธ ์ ์ฉ "~~ ๋ ผ๋ฌธ๊ณผ ๊ด๋ จ๋ ~~ ๋ฅผ ๋ง๋ค์ด์ค"
๋ ผ๋ฌธ -> ํ๋ก๊ทธ๋จ์ผ๋ก ์ ์ฉ -> ์ข์ํ๋ ๊ธฐ์ ์ด ์๋ค.
Notion
- ๊ฐ์ฅ ํฐ ์ ๋ชฉ: # ๋๋ <h1> ํ๊ทธ
- ์ค๊ฐ ์ ๋ชฉ: ## ๋๋ <h2> ํ๊ทธ
- ์์ ์ ๋ชฉ: ### ๋๋ <h3> ํ๊ทธ
/๋ชฉ์ฐจ
# + space
์ฝ๋ ์ค ๋ฐ๊ฟ ๊ฐ๋ฅ
/ํ ๊ธ /toggle
window + shift + s -> ์บก์ณ
๊ณต์ > ๊ฒ์
https://rowan-sail-868.notion.site/Prompt-1337d480b5938034a699d397716aecb8
https://rowan-sail-868.notion.site/Prompt-bab8adb4fc2741bf944b3c525b5ed68f
์ฝ๋)
import requests
def get_naver_autocomplete(query):
url = f"https://ac.search.naver.com/nx/ac"
params = {
"q": query,
"con": "1",
"frm": "nx",
"ans": "2",
"r_format": "json",
"r_enc": "utf-8",
"r_unicode": "0",
"st": "100"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
suggestions = [item[0] for item in data['items'][0]]
return suggestions
else:
print("์๋์์ฑ ์์ฒญ ์คํจ:", response.status_code)
return None
# ํ
์คํธ ์์
query = "ํ์ด์ฌ"
suggestions = get_naver_autocomplete(query)
print(f"'{query}'์ ์๋์์ฑ ํค์๋:")
print(suggestions)
๊ฒฐ๊ณผ)
'ํ์ด์ฌ'์ ์๋์์ฑ ํค์๋:
['ํ์ด์ฌ', 'ํ์ด์ฌ ์๊ฒฉ์ฆ', 'ํ์ด์ฌ ๋
ํ', 'ํ์ด์ฌ ์ค์น', 'ํ์ด์ฌ ๊ธฐ์ด', 'ํ์ด์ฌ ์ฑ
', 'ํ์ด์ฌ ๋ฆฌ์คํธ', 'ํ์ด์ฌ ๋ป', 'ํ์ด์ฌ int', 'ํ์ด์ฌ float']
ํ๋กฌํํธ)
๋ฐฉ๊ธ ํ๋ก๊ทธ๋จ์ ์
๊ทธ๋ ์ด๋ ์ํค๊ณ ์ถ๋ค. query๋ฅผ csv ํ์ผ์ 1์ด๋ก ์
๋ ฅ๋ฐ๊ณ ์ถ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ csv ํ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ป์ด์ 1์ด์๋ ํค์๋, 2์ด์๋ ์๋์์ฑ ํค์๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด ์ฃผ๋ ด.
์ฝ๋)
import requests
import pandas as pd
def get_naver_autocomplete(query):
url = f"https://ac.search.naver.com/nx/ac"
params = {
"q": query,
"con": "1",
"frm": "nx",
"ans": "2",
"r_format": "json",
"r_enc": "utf-8",
"r_unicode": "0",
"st": "100"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
suggestions = [item[0] for item in data['items'][0]]
return suggestions
else:
print("์๋์์ฑ ์์ฒญ ์คํจ:", response.status_code)
return None
# ์์
์์ query ์ฝ๊ธฐ
input_df = pd.read_excel("input_queries.xlsx", header=None)
queries = input_df.iloc[0].tolist() # ์ฒซ ๋ฒ์งธ ํ์ ๋ชจ๋ query ๊ฐ์ ธ์ค๊ธฐ
# ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ
results = []
# ๊ฐ query์ ๋ํด ์๋์์ฑ ๊ฒฐ๊ณผ ๊ฐ์ ธ์ค๊ธฐ
for query in queries:
suggestions = get_naver_autocomplete(query)
results.append(suggestions)
# ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด ์์
ํ์ผ๋ก ์ ์ฅ
output_df = pd.DataFrame([queries, results]) # queries๋ 1ํ, results๋ 2ํ์ ์ ์ฅ
output_df.to_excel("output_suggestions.xlsx", index=False, header=False)
print("์๋์์ฑ ๊ฒฐ๊ณผ๊ฐ output_suggestions.xlsx ํ์ผ์ ์ ์ฅ๋์์ต๋๋ค.")
ํ๋กฌํํธ)
์๊ฐ ์ง์ฐํ์ฌ ์์ฒญํ๋ ๊ฒ์ ์๋ ค์ฃผ๋ ด.
์ฝ๋)
import requests
import pandas as pd
import time
def get_naver_autocomplete(query):
url = f"https://ac.search.naver.com/nx/ac"
params = {
"q": query,
"con": "1",
"frm": "nx",
"ans": "2",
"r_format": "json",
"r_enc": "utf-8",
"r_unicode": "0",
"st": "100"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
suggestions = [item[0] for item in data['items'][0]]
return suggestions if suggestions else ["์๋์์ฑ ๊ฒฐ๊ณผ ์์"]
else:
print("์๋์์ฑ ์์ฒญ ์คํจ:", response.status_code)
return ["์๋์์ฑ ๊ฒฐ๊ณผ ์์"]
# CSV ํ์ผ์์ query ์ฝ๊ธฐ
input_df = pd.read_csv("input_queries.csv")
queries = input_df.iloc[:, 0].tolist() # ์ฒซ ๋ฒ์งธ ์ด์ ๋ชจ๋ query ๊ฐ์ ธ์ค๊ธฐ
# ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ
results = []
# ๊ฐ query์ ๋ํด ์๋์์ฑ ๊ฒฐ๊ณผ ๊ฐ์ ธ์ค๊ธฐ
for query in queries:
suggestions = get_naver_autocomplete(query)
print(query)
results.append([query, ", ".join(suggestions)])
# ๊ฐ ์์ฒญ ์ฌ์ด์ 2์ด ์ง์ฐ ์ถ๊ฐ
time.sleep(2)
# ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด CSV ํ์ผ๋ก ์ ์ฅ
output_df = pd.DataFrame(results, columns=["ํค์๋", "์๋์์ฑ ๊ฒฐ๊ณผ"])
output_df.to_csv("output_suggestions.csv", index=False, encoding="utf-8-sig")
print("์๋์์ฑ ๊ฒฐ๊ณผ๊ฐ output_suggestions.csv ํ์ผ์ ์ ์ฅ๋์์ต๋๋ค.")
import requests
import pandas as pd
from datetime import datetime
def get_naver_autocomplete(query):
url = f"https://ac.search.naver.com/nx/ac"
params = {
"q": query,
"con": "1",
"frm": "nx",
"ans": "2",
"r_format": "json",
"r_enc": "utf-8",
"r_unicode": "0",
"st": "100"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
suggestions = [item[0] for item in data['items'][0]]
return suggestions
else:
print(f"์๋์์ฑ ์์ฒญ ์คํจ: {response.status_code} (๊ฒ์์ด: {query})")
return []
def read_keywords_from_excel(file_path):
try:
# Excel ํ์ผ ์ฝ๊ธฐ
df = pd.read_excel(file_path)
# 'ํค์๋' ์ปฌ๋ผ์ ๊ฐ์ ๋ฆฌ์คํธ๋ก ๋ณํ
keywords = df['ํค์๋'].str.strip().tolist()
return keywords
except Exception as e:
print(f"Excel ํ์ผ ์ฝ๊ธฐ ์ค๋ฅ: {e}")
return []
def get_multiple_autocompletes(keywords):
results = []
for keyword in keywords:
suggestions = get_naver_autocomplete(keyword)
results.append({
'ํค์๋': keyword,
'์๋์์ฑ ํค์๋': ', '.join(suggestions),
'๊ฒ์์ผ์': datetime.now().strftime('%Y-%m-%d'),
'์ถ์ถ ๊ฐ์': len(suggestions)
})
return results
def save_results_to_excel(results, output_file):
try:
# ๊ฒฐ๊ณผ๋ฅผ DataFrame์ผ๋ก ๋ณํ
df = pd.DataFrame(results)
# Excel ์์ฑ์ ์ค์
writer = pd.ExcelWriter(output_file, engine='xlsxwriter')
# DataFrame์ Excel๋ก ์ ์ฅ
df.to_excel(writer, index=False, sheet_name='์๋์์ฑ๊ฒฐ๊ณผ')
# ์ํฌ๋ถ๊ณผ ์ํฌ์ํธ ๊ฐ์ ธ์ค๊ธฐ
workbook = writer.book
worksheet = writer.sheets['์๋์์ฑ๊ฒฐ๊ณผ']
# ์ด ๋๋น ์๋ ์กฐ์
for i, col in enumerate(df.columns):
column_width = max(df[col].astype(str).apply(len).max(), len(col)) + 2
worksheet.set_column(i, i, column_width)
# ํค๋ ํ์ ์ง์
header_format = workbook.add_format({
'bold': True,
'text_wrap': True,
'valign': 'top',
'fg_color': '#D7E4BC',
'border': 1
})
# ํค๋ ์คํ์ผ ์ ์ฉ
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)
# ํ์ผ ์ ์ฅ
writer.close()
return True
except Exception as e:
print(f"Excel ํ์ผ ์ ์ฅ ์ค ์ค๋ฅ ๋ฐ์: {e}")
return False
def main():
# ํ์ผ ๊ฒฝ๋ก ์ค์
input_file = 'input_keyword.xlsx' # ์
๋ ฅ Excel ํ์ผ
output_file = f'naver_autocomplete_results_{datetime.now().strftime("%Y%m%d")}.xlsx' # ๊ฒฐ๊ณผ Excel ํ์ผ
try:
# Excel์์ ํค์๋ ์ฝ๊ธฐ
print("ํค์๋ ํ์ผ์ ์ฝ๋ ์ค...")
keywords = read_keywords_from_excel(input_file)
if not keywords:
print("ํค์๋๋ฅผ ์ฝ์ด์ค์ง ๋ชปํ์ต๋๋ค. ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค.")
return
print(f"์ด {len(keywords)}๊ฐ์ ํค์๋๋ฅผ ์ฝ์์ต๋๋ค.")
# ์๋์์ฑ ํค์๋ ์ถ์ถ
print("์๋์์ฑ ํค์๋๋ฅผ ์ถ์ถํ๋ ์ค...")
results = get_multiple_autocompletes(keywords)
# ๊ฒฐ๊ณผ๋ฅผ Excel ํ์ผ๋ก ์ ์ฅ
print("๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ์ค...")
if save_results_to_excel(results, output_file):
print(f"์๋์์ฑ ํค์๋๋ฅผ '{output_file}' ํ์ผ์ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฅํ์ต๋๋ค.")
else:
print("๊ฒฐ๊ณผ ์ ์ฅ์ ์คํจํ์ต๋๋ค.")
except Exception as e:
print(f"ํ๋ก๊ทธ๋จ ์คํ ์ค ์ค๋ฅ ๋ฐ์: {e}")
if __name__ == "__main__":
main()
ํ๋กฌํํธ)
ChatGPT API (๋ชจ๋ธ๋ช
gpt-4o)
~ ํ๊ณ ์ถ๋ค. ์ํ ์ฝ๋ ๋ง๋ค์ด์ค ์ ์๋?
(1)
(2)
(3)
์์ ์์
๋ด์ฉ์ ๊ธฐ์ตํด ์ฃผ๋ ด. ๊ทธ๋ฆฌ๊ณ ์ด ์์
์ ์ด์ด์ ํด ๋๊ฐ๊ฑฐ์ผ.
4-2 ์ค๋งํธ ์คํ ์ด ๋ณต์ต or ๋ด ํ๋ก์ ํธ ๊ด๋ จ ํ๋ก๊ทธ๋จ ๋ง๋ค์ด๋ณด๊ธฐ
https://rowan-sail-868.notion.site/Prompt-bab8adb4fc2741bf944b3c525b5ed68f
๋ช ๋ น + ๋งฅ๋ฝ + ์์ + ์ถ๋ ฅ ๋ฐ์ดํฐ
์๋ ์๊ณ ์์ ๊ดํธ[]๋ด์ฉ๋ง ์กฐ๊ธ ์ฝ๊ฒ ์์ ์ ๋ถํํฉ๋๋ค.
- ๊ดํธ ์ด์ธ์ ๋ถ๋ถ์ ๋ณ๊ฒฝ์์ด ์ ๊ณตํด ์ฃผ์ธ์.
- ์์ ํ ๋ด์ฉ์ ๋ณผ๋์ฒด๋ก ํ์ํด ์ฃผ์ธ์.
์๋ ์๊ณ ์์ ๊ดํธ[]๋ด์ฉ๋ง ์กฐ๊ธ ์ฝ๊ฒ ์์ ์ ๋ถํํฉ๋๋ค.
- ๊ดํธ ์ด์ธ์ ๋ถ๋ถ์ ๋ณ๊ฒฝ์์ด ์ ๊ณตํด ์ฃผ์ธ์.
- ์์ ํ ๋ด์ฉ์ ๋ณผ๋์ฒด๋ก ํ์ํด ์ฃผ์ธ์.
- ์์ ์ ๊ณผ ์์ ํ์ ๋ด์ฉ์ ๋น๊ตํ ์ ์๋๋ก ๊ตฌ์ฑํด ์ฃผ์ธ์.
์ผ๋ฐ์ ์ผ๋ก ์์ด๋ก ํ์ตํ ์์ด ๋ง๊ธฐ์ ์์ด๋ก ๋ฌผ์ด๋ณผ ๋, ์ข ๋ ์์ธํ ์ค๋ช ์ ์ป์ ์ ์๋ค.
์ ๋ณด, ๋งฅ๋ฝ, ์์๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํ๊ธฐ
AI๋ฅผ ๊ณต๋ถ์ํจ๋ค. ์ ์ฒ๋ง๊ถ ์ด์์ ๊ณต๋ถํ์
RAG์ ๊ทธ๋ฆผ๋ AI๊ฐ ๋ง๋ค์ด ์ค ๊ฒ
2021๋ ๋ถํฐ 2024๋ ๊น์ง์ ์๊ณผ ๊ธ์ ๊ฐ๊ฒฉ์ ์ด๋ป๊ฒ ๋๊ณ , ์ ๋ง์ ๋ํด ์๋ ค์ฃผ๋ ด. ์ค์๊ฐ ๊ฒ์ ์ด์ฉํด ์ฃผ๋ ด. ๊ทธ๋ฆฌ๊ณ ๋ฌด์์ด๋ ๋ถ์ ๊ทธ๋ํ๋ฅผ ์ถ๊ฐํด ์ฃผ๋ ด. - ์๊ณผ ๊ธ ๊ฐ๊ฒฉ ๊ทธ๋ํ - ๊ธฐํ ๊ทธ๋ํ
๊ธฐํ ๋ํ์ ์ธ ๋ ผ๋ฌธ
- Chain-of-Thought Prompting
- ๋ ผ๋ฌธ ์ ๋ชฉ: "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models"
- ์ฐ๋: 2022๋
- ๋งํฌ: https://arxiv.org/abs/2201.11903
- ํต์ฌ: ๋ชจ๋ธ์ด ๋จ๊ณ๋ณ ์ฌ๊ณ ๊ณผ์ ์ ๋ช ์์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋๋ก ์ ๋ํ๋ ๊ธฐ๋ฒ
- ReAct: Reasoning and Acting
- ๋ ผ๋ฌธ ์ ๋ชฉ: "ReAct: Synergizing Reasoning and Acting in Language Models"
- ์ฐ๋: 2022๋
- ๋งํฌ: https://arxiv.org/abs/2210.03629
- ํต์ฌ: ์ถ๋ก (Reasoning)๊ณผ ํ๋(Acting)์ ๊ฒฐํฉํ๋ ํ์ ์ ์ธ ํ๋กฌํํธ ๊ธฐ๋ฒ
- Tree of Thoughts
- ๋ ผ๋ฌธ ์ ๋ชฉ: "Tree of Thoughts: Deliberate Problem Solving with Large Language Models"
- ์ฐ๋: 2023๋
- ๋งํฌ: https://arxiv.org/abs/2305.10601
- ํต์ฌ: ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์ฌ๊ณ ์ ํธ๋ฆฌ ๊ตฌ์กฐ ํ์ ๋ฐฉ๋ฒ
- Self-Consistency
- ๋ ผ๋ฌธ ์ ๋ชฉ: "Self-Consistency Improves Chain of Thought Reasoning in Language Models"
- ์ฐ๋: 2022๋
- ๋งํฌ: https://arxiv.org/abs/2203.11171
- ํต์ฌ: ๋ค์ํ ์ถ๋ก ๊ฒฝ๋ก๋ฅผ ์์ฑํ๊ณ ๊ฐ์ฅ ์ผ๊ด๋ ๋ต๋ณ์ ์ ํํ๋ ๊ธฐ๋ฒ
- Least-to-Most Prompting
- ๋ ผ๋ฌธ ์ ๋ชฉ: "Least-to-Most Prompting Enables Complex Reasoning in Large Language Models"
- ์ฐ๋: 2022๋
- ๋งํฌ: https://arxiv.org/abs/2205.10601
- ํต์ฌ: ๊ฐ์ฅ ๊ฐ๋จํ ํ์ ๋ฌธ์ ๋ถํฐ ์ ์ฐจ ๋ณต์กํ ๋ฌธ์ ๋ก ํ์ฅํ๋ ์ ๊ทผ ๋ฐฉ์
์ถ๊ฐ ์ฐธ๊ณ ์๋ฃ:
- Prompt Engineering Guide: https://www.promptingguide.ai/papers
- ์ต์ Prompt Engineering ๋ ผ๋ฌธ ๋ชจ์ ์ฌ์ดํธ๋ก, ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ๋ ผ๋ฌธ ๋ฆฌ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.