์ฌ๊ถ, ์์์ฆ, ์ฌ์ ์๋ฑ๋ก์ฆ๊น์ง ์๋ ์ธ์ํ๋ ์์ ์๋ํ ๊ฐ์ด๋
๐ง GPT-4o๋?
OpenAI์ ์ต์ ๋ชจ๋ธ GPT-4o๋ ์ด๋ฏธ์ง ์ธ์ ๋ฅ๋ ฅ์ด ๊ฐํ๋์ด, ํ๊ตญ์ด ์๊ธ์จ๋ ๋ฐ์ด๋ ์ ํ๋๋ก ์ธ์ํฉ๋๋ค. ์ฌ๊ถ, ์์์ฆ, ์ฌ์ ์๋ฑ๋ก์ฆ ๊ฐ์ ์ด๋ฏธ์ง ๋ฌธ์์์๋ ์ ๋ณด๋ฅผ ์ถ์ถํ ์ ์์ด, ์์ ๊ณผ์ ์ฐ๋์ผ๋ก ์ ๋ฌด ์๋ํ๊ฐ ํ์ธต ๋ ๋ฐ์ ํ๊ฒ ๋์์ฃ .
๐ก ์์ ๊ณผ GPT-4o๋ฅผ ์ฐ๊ฒฐํ๋ฉด ๊ฐ๋ฅํ ์ผ๋ค
- ๐ ์ด๋ฏธ์ง ๋ฌธ์์์ ํ ์คํธ ์๋ ์ถ์ถ
- โ๏ธ ์๊ธ์จ ์ธ์๋ ๊ฐ๋ฅํ์ฌ ์ํ๊ธฐ๋ก๋ถ๋ ์๊ธฐ ๋ฉ๋ชจ ์ฒ๋ฆฌ์ ํ์
- ๐ง ๋ฐ์ดํฐ ๊ธฐ๋ฐ ๋ง์ถคํ ์ด๋ฉ์ผ ์๋ ์์ฑ
- ๐ ์์ ์ ์๋ ์ ๋ ฅ ํ ๋น ๋ฅธ ์ ๋ฆฌ ๋ฐ ๋ถ์
๐ ์ค๋น๋ฌผ
- OpenAI API ํค
๐ https://platform.openai.com/signup
๊ณ์ ์์ฑ ํ ๊ฒฐ์ ์๋จ ๋ฑ๋กํ๋ฉด $5 ์ถฉ์ ๋ง์ผ๋ก ์์ฒ ๊ฑด ์ฒ๋ฆฌ ๊ฐ๋ฅ
๋ฐ๊ธ๋ API ํค๋ ์์ ๋งคํฌ๋ก์ ์ง์ ์ฝ์ ํ๊ฒ ๋ฉ๋๋ค. - ์์
์ฉ GPT ๋งคํฌ๋ก ํ์ผ (
.xlam
)
๐ ๏ธ .xlam
ํ์ผ ๋ง๋๋ ๋ฒ (์ง์ ๋ง๋ค๊ธฐ)
GPT-4o์ ์์
์ ์ฐ๋ํ๋ ค๋ฉด, ์์
๋งคํฌ๋ก ์ถ๊ฐ ๊ธฐ๋ฅ ํ์ผ์ธ .xlam
์ ์ง์ ์์ฑํด์ผ ํฉ๋๋ค.
โ 1๋จ๊ณ: ๋งคํฌ๋ก ํธ์ง๊ธฐ ์ด๊ธฐ
- ์์
์ด๊ธฐ โ
Alt + F11
๋ก VBA ํธ์ง๊ธฐ ์ง์ - ๋ฉ๋ด์์ [์ฝ์ ] > [๋ชจ๋] ์ ํ
โ 2๋จ๊ณ: ์๋ ์ฝ๋ ๋ถ์ฌ๋ฃ๊ธฐ (์์)
vbaFunction GetGPTResponse(prompt As String) As String
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
Dim apiKey As String
apiKey = "YOUR_API_KEY" ' ์ฌ๊ธฐ์ ๋ฐ๊ธ๋ฐ์ API ํค ์ ๋ ฅ
Dim url As String
url = "https://api.openai.com/v1/chat/completions"
Dim data As String
data = "{""model"":""gpt-4o"",""messages"":[{""role"":""user"",""content"":""" & prompt & """}]}"
With http
.Open "POST", url, False
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "Authorization", "Bearer " & apiKey
.send data
GetGPTResponse = .responseText
End With
End Function
๐ API Key๋ ๋ ธ์ถ๋์ง ์๋๋ก ์ฃผ์ํ์ธ์!
โ 3๋จ๊ณ: ํ์ผ ์ ์ฅํ๊ธฐ
- [ํ์ผ] > [๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์ ์ฅ] > ํ์ผ ํ์:
Excel ์ถ๊ฐ ๊ธฐ๋ฅ (*.xlam)
- ์:
GPT4o_Addin.xlam
โ 4๋จ๊ณ: ์์ ์ ๋ฑ๋กํ๊ธฐ
- ์์ > [ํ์ผ] > [์ต์ ] > [์ถ๊ฐ ๊ธฐ๋ฅ] > ์๋ โExcel ์ถ๊ฐ ๊ธฐ๋ฅโ์์ โ์ด๋โ ํด๋ฆญ
- ์ง์ ๋ง๋
.xlam
ํ์ผ ์ถ๊ฐ ํ ์ฒดํฌ
๐ฏ ์ค์ ์์
๐งพ ์์์ฆ ๋ด์ญ ๋ถ์ ์๋ํ ๋ฐฉ๋ฒ
GPT-4o + ์์ = ์์์ฆ ์ ๋ฆฌ์ ์ ์ธ๊ณ!
๐ธ 1๋จ๊ณ: ์์์ฆ ์ด๋ฏธ์ง ์ค๋น
- ์ค๋งํธํฐ ์นด๋ฉ๋ผ๋ก ์ฐ๊ฑฐ๋ ์ค์บํ ์์์ฆ ํ์ผ ์ค๋น
- JPEG, PNG, PDF ๋ชจ๋ ๊ฐ๋ฅ (๋จ, PDF๋ ์ด๋ฏธ์ง๋ก ๋ณํ ํ์)
- ๊ธ์๊ฐ ๋๋ ทํ๊ณ ๋ฐฐ๊ฒฝ์ด ๊นจ๋ํ ์ด๋ฏธ์ง๊ฐ ์ธ์๋ฅ ์ด ๋์ต๋๋ค
โ Tip: ์ฌ๋ฌ ์ฅ์ ์์์ฆ๋ ๋ฐ๋ณต ์ฒ๋ฆฌ ๊ฐ๋ฅ โ ์ผ๊ด ์๋ํ ๊ฐ๋ฅํด์!
๐ง 2๋จ๊ณ: GPT-4o์ ๋ถ์ ์์ฒญํ๊ธฐ
๐ฅ ์์ ํ๋กฌํํธ (์๋ฌธ/ํ๊ธ ํผ์ฉ ๊ฐ๋ฅ)
plaintext์ด ์์์ฆ์์ ๋ ์ง, ํญ๋ชฉ, ๊ธ์ก, ์ดํฉ๊ณ๋ฅผ ํ ํ์์ผ๋ก ์ ๋ฆฌํด์ค.
๐งพ GPT-4o์๊ฒ ๋ณด๋ผ ์์ฒญ ๊ตฌ์กฐ (JSON ์์)
json{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "์ด ์์์ฆ์์ ๋ ์ง, ํญ๋ชฉ, ๊ธ์ก์ ์ถ์ถํด์ ํ๋ก ์ ๋ฆฌํด์ค."
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,[์ด๋ฏธ์ง base64 ์ธ์ฝ๋ฉ]"
}
}
]
}
]
}
GPT-4o๋ ํด๋น ์ด๋ฏธ์ง์์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ์๋ตํด์ค๋๋ค:
plaintext๋ ์ง: 2025-03-29
ํญ๋ชฉ | ๊ธ์ก
----------------
์ฝ๋ผ | 2,000์
์๋์์น | 3,500์
์ดํฉ๊ณ: 5,500์
๐ 3๋จ๊ณ: ์์ ์ ์๋ ์ ๋ฆฌ
GPT์ ์๋ต์ ๊ฐ๊ณตํด์ ์์ ์ ์๋์ฒ๋ผ ์ ๋ฆฌํฉ๋๋ค:
๋ ์ง | ํญ๋ชฉ | ๊ธ์ก |
---|---|---|
2025-03-29 | ์ฝ๋ผ | 2000 |
2025-03-29 | ์๋์์น | 3500 |
๊ทธ๋ฆฌ๊ณ ์ดํฉ๊ณ
๋ ์๋ ์์์ผ๋ก ๊ณ์ฐ ๊ฐ๋ฅ:
excel=SUM(C2:C100)
๐ ๋ฐ๋ณต ์๋ํ ํ
์ฌ๋ฌ ์ฅ์ ์์์ฆ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ ค๋ฉด:
- ๐ ์ด๋ฏธ์ง ํ์ผ๋ช ์ ๋ฆฌ์คํธ๋ก ์์ฑ
- ๐ For Each ๋ฃจํ๋ก ํ๋์ฉ GPT-4o์ ๋ณด๋
- ๐ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ํ ์ค์ฉ ์ถ๊ฐ
โ VBA ๋ฃจํ ์์ (๊ฐ๋ ์ฝ๋)
vbaSub ProcessReceipts()
Dim files As Variant
files = Array("receipt1.jpg", "receipt2.jpg", "receipt3.jpg")
Dim i As Integer
For i = 0 To UBound(files)
Dim result As String
result = GetGPTResponseFromImage(files(i), "์์์ฆ ํญ๋ชฉ, ๊ธ์ก, ๋ ์ง๋ฅผ ํ๋ก ์ ๋ฆฌํด์ค.")
' ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํด์ ์์ ์ ํ ์ค์ฉ ๋ถ์ฌ๋ฃ๊ธฐ (ํ์ฑ ๋ก์ง ํ์)
Next i
End Sub
๐ง GPT๊ฐ ์ ์ธ์ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ?
- ์ด๋ฏธ์ง๊ฐ ํ๋ฆฟํ๊ฑฐ๋ ๊ตฌ๊ฒจ์ง ๊ฒฝ์ฐ โ ์ฌ์ดฌ์
- ์๊ธ์จ ์์์ฆ โ ์ธ์๋ฅ ๋ฎ์ (์ธ์๋ ์์์ฆ ์ฐ์ )
- ์์์ ๋ณด์ ํ์ ์, ํ ์คํธ ์ธ์ ๊ฒฐ๊ณผ๋ง ๋ฐ์์ ์๋ ์ ๋ฆฌ๋ OK
๐ ์ฌ์ฉ ๋น์ฉ์?
- 1,000ํ ํฐ = ์ฝ 6.7์
- ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ถ์ ํ๋๋น ์์ญ ์ ๋ฏธ๋ง์ ๋น์ฉ
- ์ค์ ์์ ํ ํฐ ์ฌ์ฉ๋ ๋ฐ ๋น์ฉ๋ ์ค์๊ฐ ํ์ธ ๊ฐ๋ฅ
๐ ๋ง๋ฌด๋ฆฌ
GPT-4o์ ์์
์ ๊ฒฐํฉ์ ๋จ์ํ ์๋ํ๋ฅผ ๋์ด, ๋ฌธ์ ์ฒ๋ฆฌ์ ๋ฐ์ดํฐ ๋ถ์์ AI ํ์ ์ ๊ฐ๋ฅ์ผ ํฉ๋๋ค.
๋๊ตฌ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ .xlam
ํ์ผ๋ง ์์ผ๋ฉด, ๋ณต์กํ ์ฝ๋ฉ ์์ด๋ ์์
์์ ๋ฐ๋ก GPT๋ฅผ ์ฌ์ฉํ ์ ์์ด์.