์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- 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
Prompt ์ค์ต - ์ค๋งํธ ์คํ ์ด | Notion
๋ค์ด๋ฒ ์๋ ์์ฑ ํค์๋ ๊ฐ์ ธ์ค๊ธฐ(1)
rowan-sail-868.notion.site
https://rowan-sail-868.notion.site/Prompt-bab8adb4fc2741bf944b3c525b5ed68f
Prompt ์์ง๋์ด๋ง | Notion
Prompt Engineering ?
rowan-sail-868.notion.site
์ฝ๋)
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
Prompt ์์ง๋์ด๋ง | Notion
Prompt Engineering ?
rowan-sail-868.notion.site
๋ช ๋ น + ๋งฅ๋ฝ + ์์ + ์ถ๋ ฅ ๋ฐ์ดํฐ
์๋ ์๊ณ ์์ ๊ดํธ[]๋ด์ฉ๋ง ์กฐ๊ธ ์ฝ๊ฒ ์์ ์ ๋ถํํฉ๋๋ค. - ๊ดํธ ์ด์ธ์ ๋ถ๋ถ์ ๋ณ๊ฒฝ์์ด ์ ๊ณตํด ์ฃผ์ธ์. - ์์ ํ ๋ด์ฉ์ ๋ณผ๋์ฒด๋ก ํ์ํด ์ฃผ์ธ์.
์๋ ์๊ณ ์์ ๊ดํธ[]๋ด์ฉ๋ง ์กฐ๊ธ ์ฝ๊ฒ ์์ ์ ๋ถํํฉ๋๋ค. - ๊ดํธ ์ด์ธ์ ๋ถ๋ถ์ ๋ณ๊ฒฝ์์ด ์ ๊ณตํด ์ฃผ์ธ์. - ์์ ํ ๋ด์ฉ์ ๋ณผ๋์ฒด๋ก ํ์ํด ์ฃผ์ธ์. - ์์ ์ ๊ณผ ์์ ํ์ ๋ด์ฉ์ ๋น๊ตํ ์ ์๋๋ก ๊ตฌ์ฑํด ์ฃผ์ธ์.
์ผ๋ฐ์ ์ผ๋ก ์์ด๋ก ํ์ตํ ์์ด ๋ง๊ธฐ์ ์์ด๋ก ๋ฌผ์ด๋ณผ ๋, ์ข ๋ ์์ธํ ์ค๋ช ์ ์ป์ ์ ์๋ค.
์ ๋ณด, ๋งฅ๋ฝ, ์์๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํ๊ธฐ
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 ๋ ผ๋ฌธ ๋ชจ์ ์ฌ์ดํธ๋ก, ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ๋ ผ๋ฌธ ๋ฆฌ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.