๋ณธ๋ฌธ
[์ค์ต] ๋ฌธ์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์๊ฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ฃผ๋ ํ๋ก๊ทธ๋จ
๐ค AI/๐ ์ค์ต(Hands-on Labs) 2024. 3. 12. 11:39
โ ์ค์ต ์ค๋น๋ฌผ: apikey
https://server-engineer.tistory.com/983
โ
์ค์ต ์๋ฃ
https://github.com/i-am-shuan/learn-openai/tree/main/python-chatgpt/assistants_api
โ ์๋น์ค ์ค๋ช
์ด ํ๋ก๋จ์ OpenAI์ GPT-4์ ์ฐ๋ํ์ฌ CSV ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ , ์ด๋ฅผ ๋ฐํ์ผ๋ก ์์ 10๊ฐ ๊ธฐ์ ์ ๋งค์ถ์ ์๊ฐํํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ์์ ์ ๋๋ค. ์ด ์ฝ๋๋ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์๊ฐํ ์์ ์ ์๋ํํ๋ฉฐ, ํนํ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ณต์กํ ์ฟผ๋ฆฌ์ ๋์ํ๋ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ์ฉํฉ๋๋ค.
- ์ฝ๋ ํด์๊ธฐ(Code Interpreter)๋ฅผ ์ฌ์ฉํ๋ฉด Assistants API๋ฅผ ์ฌ์ฉํ์ฌ ์๋๋ฐ์ค ์คํ ํ๊ฒฝ์์ Python ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํ ์ ์์ต๋๋ค.
- ์ด ๋๊ตฌ๋ ๋ค์ํ ๋ฐ์ดํฐ์ ํฌ๋งท์ ํ์ผ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ์ ๊ทธ๋ํ ์ด๋ฏธ์ง๊ฐ ํฌํจ๋ ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค.
1. ๋์ ๊ณผ์
- 1๋จ๊ณ: ํ๊ฒฝ ์ค์ ๊ณผ ํด๋ผ์ด์ธํธ ์ด๊ธฐํ
- ๋จผ์ , OPENAI_API_KEY ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ฌ API ํค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ OpenAI ์๋น์ค์ ์ ๊ทผํ๊ธฐ ์ํ ์ธ์ฆ ํค์
๋๋ค.
OpenAI() ํด๋ผ์ด์ธํธ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ OpenAI API์์ ์ฐ๊ฒฐ์ ์ด๊ธฐํํฉ๋๋ค.
- ๋จผ์ , OPENAI_API_KEY ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ฌ API ํค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ OpenAI ์๋น์ค์ ์ ๊ทผํ๊ธฐ ์ํ ์ธ์ฆ ํค์
๋๋ค.
- 2๋จ๊ณ: ์ฐธ์กฐ ํ์ผ ์
๋ก๋
- client.files.create ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ 'sample/fortune_1000_revenue_2022.csv' ํ์ผ์ OpenAI ์๋ฒ์ ์ ๋ก๋ํฉ๋๋ค. ์ด ํ์ผ์ ๋ถ์ ๋์์ธ ํฌ์ถ 1000 ๊ธฐ์ ์ 2022๋ ๋งค์ถ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
- ์ ๋ก๋๋ ํ์ผ์ ID๋ฅผ ์ถ๋ ฅํฉ๋๋ค. ์ด ID๋ ํ์ ๋จ๊ณ์์ ํ์ผ์ ์ฐธ์กฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- 3๋จ๊ณ: ์ด์์คํดํธ ์์ฑ
- client.beta.assistants.create ๋ฉ์๋๋ฅผ ํตํด ์๋ก์ด ์ด์์คํดํธ๋ฅผ ์์ฑํฉ๋๋ค. ์ด ์ด์์คํดํธ๋ CSV ํ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ , ์ฌ์ฉ์ ์ฟผ๋ฆฌ์ ์ต์ ์ผ๋ก ์๋ตํ๊ธฐ ์ํ ์ง์์ฌํญ์ ํฌํจํฉ๋๋ค.
์์ฑ๋ ์ด์์คํดํธ๋ ์ฝ๋ ํด์(code_interpreter) ๋ฐ ๋ฐ์ดํฐ ๊ฒ์(retrieval) ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ ๋ก๋ํ ํ์ผ ID๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
- client.beta.assistants.create ๋ฉ์๋๋ฅผ ํตํด ์๋ก์ด ์ด์์คํดํธ๋ฅผ ์์ฑํฉ๋๋ค. ์ด ์ด์์คํดํธ๋ CSV ํ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ , ์ฌ์ฉ์ ์ฟผ๋ฆฌ์ ์ต์ ์ผ๋ก ์๋ตํ๊ธฐ ์ํ ์ง์์ฌํญ์ ํฌํจํฉ๋๋ค.
- 4๋จ๊ณ: ์ค๋ ๋ ์์ฑ ๋ฐ ๋ฉ์์ง ์ ์ก
- client.beta.threads.create ๋ฉ์๋๋ก ์๋ก์ด ์ค๋ ๋๋ฅผ ์์ฑํฉ๋๋ค.
์์ฑ๋ ์ค๋ ๋์ ๋ฉ์์ง๋ฅผ ์ ์กํ์ฌ, ์ ๋ก๋๋ ํ์ผ์ ์ฌ์ฉํ ์์ 10๊ฐ ๊ธฐ์ ์ ๋งค์ถ ์๊ฐํ๋ฅผ ์์ฒญํฉ๋๋ค.
- client.beta.threads.create ๋ฉ์๋๋ก ์๋ก์ด ์ค๋ ๋๋ฅผ ์์ฑํฉ๋๋ค.
- 5๋จ๊ณ: ์คํ ๋ช
๋ น ๋ฐ ์ํ ํ์ธ
- client.beta.threads.runs.create ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ, ์ด์์คํดํธ์๊ฒ ํน์ ์ง์์ฌํญ์ ์คํํ๋๋ก ์์ฒญํฉ๋๋ค.
- ์คํ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํ์ฌ, ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋๊ธฐํฉ๋๋ค. ์ํ๊ฐ 'completed'๊ฐ ๋๋ฉด, ๋ค์ ๋จ๊ณ๋ก ์งํํฉ๋๋ค.
- 6๋จ๊ณ: ๊ฒฐ๊ณผ ๋ฉ์์ง ๊ฒ์
- client.beta.threads.messages.list ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ๋์์ ์์ฑ๋ ๋ฉ์์ง๋ฅผ ๊ฒ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ด์์คํดํธ๊ฐ ์ํํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์๊ฐํ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- 7๋จ๊ณ: ์๊ฐํ ํ์ผ ์ ์ฅ
- ๋ง์ง๋ง ๋จ๊ณ์์๋ ์ด์์คํดํธ๊ฐ ์์ฑํ ๋งค์ถ ์๊ฐํ ์ด๋ฏธ์ง ํ์ผ์ ๋ก์ปฌ ์์คํ ์ ์ ์ฅํฉ๋๋ค. client.files.content ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ ๋ด์ฉ์ ๊ฒ์ํ๊ณ , ์ด๋ฅผ ๋ฐ์ดํธ ํ์์ผ๋ก ๋ก์ปฌ ํ์ผ์ ์์ฑํฉ๋๋ค.
2. ์คํ ๊ฒฐ๊ณผ
* p.s. OpenAI Assistants API: https://platform.openai.com/docs/assistants/overview
๋๊ธ