์ง๋ ๊ธ์์ ์์ ํ ๊ฒ์ ๋ฐํ์ผ๋ก, ๋ฐ๋ชจ ์๋น์ค๋ฅผ ๋ง๋ค์๋ค. ์ด๋ฒ ๊ธ์ ํด๋น ๋ฐ๋ชจ๋ฅผ ๋ง๋ค ๋์ ๊ธฐ๋ก์ด๋ค.
1. RAG ๊ณผ์ ๊ตฌํ
์ง๋๋ฒ์๋ pinecone์ ๋ฒกํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์ ๊น์ง ์๋ฃํ์ผ๋, ์ด์ ๋ ๋ด๊ฐ ์์ฑํ ๊ธ๊ณผ ์ ์ฌ๋๊ฐ ๋์ k๊ฐ์ ํญ๋ชฉ์ ๊ฐ์ ธ์, ํ๋กฌํํธ์ ์์๋ก ๋ฃ์ด, ์๋ก์ด ์๊ธฐ์๊ฐ์๋ฅผ ์์ฑํ๋ ์ผ๋ง ๋จ์๋ค.
1. Retrieve
๋จผ์ , query๋ฅผ embedding ํ๊ณ , pinecone์์ ์ ์ฌํ 3๊ฐ์ ํญ๋ชฉ์ ๊ฐ์ ธ์จ๋ค.
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
if st.button("์์ฑํ๊ธฐ!"):
pinecone.init(api_key=st.secrets["PINECONE_API_KEY"], environment="gcp-starter")
index = pinecone.Index("resumai-self-introduction-index")
query_embedding = get_embedding(user_answer) # ์ ์ ๊ฐ ์ง๋ฌธ์ ๋ต๋ณํ ๊ฒ์ ์๋ฒ ๋ฉ
retrieved_data = index.query(vector=query_embedding, top_k=3, include_metadata=True) # ์ ์ฌํ top 3๊ฐ์ ๋ต๋ณ
data = retrieved_data["matches"]
data_1_question = data[0]["metadata"]["question"]
data_1_answer = data[0]["metadata"]["answer"]
data_2_question = data[1]["metadata"]["question"]
data_2_answer = data[1]["metadata"]["answer"]
data_3_question = data[2]["metadata"]["question"]
data_3_answer = data[2]["metadata"]["answer"]
์ด๋ ๊ฒ index.query() ํจ์๋ฅผ ํตํด, ๊ฐ๋จํ๊ฒ top 3๊ฐ์ ์ ์ฌํ ๋ฌธ์ฅ๋ค๊ณผ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
2. Augment: ํ๋กฌํํ
๋จผ์ , RESUMAI์ ๊ด๋ จ๋ 2๋ฒ์งธ ๋ธ๋ก๊ทธ์์ ์คํํ ๊ฒ์ฒ๋ผ, 3-shot์ ํฌํจํ ํ๋กฌํํธ๋ฅผ ์ํด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค:
GENERATE_SELF_INTRODUCTION_PROMPT = f"""
์๊ธฐ์๊ฐ์๋ฅผ ์์ฑํ๋๋ฐ, ๋ค์ ์ง๋ฌธ์ ๋ตํ๋ ค๊ณ ํฉ๋๋ค.
Question: {{question}} \n
์ง๋ฌธ์ ๋ํ ์ ์ ๋๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Context: {{context}} \n
์๋๋ ๋ช ๊ฐ์ง ์์์
๋๋ค.
examples: \n {{examples}}
์์๋ค๊ณผ ์ ์ ๋ต๋ณ์ ์ฐธ๊ณ ํ์ฌ ์ง๋ฌธ์ ๋ํ ๋๋ต์ ํด ์ฃผ์ธ์.
"""
์ฌ๊ธฐ์ question์ ๋ด๊ฐ ์์ฑํ ์ง๋ฌธ์ด๊ณ , context๋ ๋์ ๋๋ต, examples๋ pinecone์ผ๋ก ์ฐพ์ ์์๋ค์ด๋ค.
examples = (
f"Question: {data_1_question}, \n Answer: {data_1_answer}, \n\n "
f"Question: {data_2_question}, \n Answer: {data_2_answer}, \n\n "
f"Question: {data_3_question}, \n Answer: {data_3_answer}"
)
prompt = GENERATE_SELF_INTRODUCTION_PROMPT.format(
examples=examples, question=question, context=user_answer
)
print(prompt)
์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํ์์ผ ๋ณด๋, ํ๋กฌํํธ๊ฐ ๋ค์๊ณผ ๊ฐ์๋ค.
์๊ธฐ์๊ฐ์๋ฅผ ์์ฑํ๋๋ฐ, ๋ค์ ์ง๋ฌธ์ ๋ตํ๋ ค๊ณ ํฉ๋๋ค.
Question: ๋ฌธ์ ํด๊ฒฐ ๊ฒฝํ
์ง๋ฌธ์ ๋ํ ์ ์ ๋๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Context: ์ด๋ฒ ์ฌ๋ฆ ๋ฐฉํ ๋, ์ผํ๋ชฐ ์๋ฃจ์
๊ฐ๋ฐ ์
์ฒด์์ 2๋ฌ ๋์ ์ธํด์ผ๋ก ๊ทผ๋ฌดํ์ต๋๋ค. ์ธํด์ ์ฒ์ ์์ํ ๋น์, ์ผํ๋ชฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ํ์ ์์คํ
๊ณผ ๊ด๋ฆฌ์ ์์คํ
์ด ์๋ฒ์ ํด๋ผ์ด์ธํธ, ๊ทธ๋ฆฌ๊ณ ์น์์์ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ์๋ํ๋์ง ์๋ฆฌ๋ฅผ ์ดํดํ๊ธฐ ์ํ ๊ณผ์ ๋ฅผ ์ํํ์ต๋๋ค.
๊ณผ์ ๋ ๊ฐ์์ ์ผํ๋ชฐ์ ๋ง๋ค๊ณ ์ผํ๋ชฐ์ ํ์๊ฐ์
์์คํ
๊ณผ ๊ด๋ฆฌ์ ์์คํ
์ ๊ตฌ์ถํ๋ ๊ฒ์ด์์ต๋๋ค. ์ผํ๋ชฐ์ ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ ์๋ฒ, HTML, ํธ์คํ
, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ ๋ค์ํ ๋ถ์ผ์. ๋น์ ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ดํ ์ง์๋ง ์๋ ์ํ์ฌ์ ์งํ์ ์ํ ํฐ ๊ทธ๋ฆผ์กฐ์ฐจ ๊ทธ๋ ค์ง์ง ์์ ์ ๋๋ก ๋ง๋งํ ์ํ์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์น์ ํ์ค์ธ HTML๋ถํฐ ์๋ฒ ์ธก ์ธ์ด์ธ PHP ๋ฑ ๊ณผ์ ์ํ์ ํ์ํ ์ง์์ ํ๋ ๋์ฉ ์ต๋ํ์ต๋๋ค. ์๊ฐ์ด ์ง๋ ๋ค HTML๊ณผ PHP ๊ฐ๊ฐ์ ๋ํ ์ง์์ ์ธํฐ๋ท์ ํตํด ๊ฐ์ข
๊ฐ์๋ฅผ ๋ฃ๊ณ , ์ฑ
์ ์ฝ์ด๋ณด์์ง๋ง ์ด ๋์ ๊ด๊ณ๋ฅผ ๋ช
ํํ ์ค๋ช
ํด ๋์ ๊ณณ์ ์๊ณ , ๊ฒฐ๊ตญ ๋ฌด์์ ๊ณผ์ ํด๊ฒฐ์ ๋์
ํ์ต๋๋ค.
์ง์ ์ํ์ฐฉ์ค๋ฅผ ๊ฒช์ผ๋ฉฐ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ ์ ์ HTML๊ณผ PHP ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํ์
ํ๊ฒ ๋์๊ณ ํ์๋ ์์ ํ ์ดํดํ๊ฒ ๋์ด ์ฑ๊ณต์ ์ผ๋ก ๊ฐ๋จํ ์ผํ๋ชฐ ๊ตฌ์ถ์ ์ฑ๊ณตํ์์ต๋๋ค.
์๋๋ ๋ช ๊ฐ์ง ์์์
๋๋ค.
examples:
Question: ์ต๊ทผ 5๋
์ด๋ด์ ํ๋ ๊ฒฝํ ์ค ๊ฐ์ฅ ๋ง์ ์ ๋ณด๋ ์๊ฒฌ์ ์์ง, ์ข
ํฉํ๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒฝํ์ ๋ํด ๊ตฌ์ฒด์ ์ผ๋ก ์์ ํ์ญ์์ค. (700์ 10 ๋จ๋ฝ ์ด๋ด),
Answer: ์ด๋ฒ ์ฌ๋ฆ ๋ฐฉํ ๋, ์ผํ๋ชฐ ์๋ฃจ์
๊ฐ๋ฐ ์
์ฒด์์ 2๋ฌ ๋์ ์ธํด์ผ๋ก ๊ทผ๋ฌดํ์ต๋๋ค. ์ธํด์ ์ฒ์ ์์ํ ๋น์, ์ผํ๋ชฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ํ์ ์์คํ
๊ณผ ๊ด๋ฆฌ์ ์์คํ
์ด ์๋ฒ์ ํด๋ผ์ด์ธํธ, ๊ทธ๋ฆฌ๊ณ ์น์์์ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ์๋ํ๋์ง ์๋ฆฌ๋ฅผ ์ดํดํ๊ธฐ ์ํ ๊ณผ์ ๋ฅผ ์ํํ์ต๋๋ค.
๊ณผ์ ๋ ๊ฐ์์ ์ผํ๋ชฐ์ ๋ง๋ค๊ณ ์ผํ๋ชฐ์ ํ์๊ฐ์
์์คํ
๊ณผ ๊ด๋ฆฌ์ ์์คํ
์ ๊ตฌ์ถํ๋ ๊ฒ์ด์์ต๋๋ค. ์ผํ๋ชฐ์ ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ ์๋ฒ, HTML, ํธ์คํ
, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ ๋ค์ํ ๋ถ์ผ์์๋ง ์๋ ์ํ์ฌ์ ์งํ์ ์ํ ํฐ ๊ทธ๋ฆผ์กฐ์ฐจ ๊ทธ๋ ค์ง์ง ์์ ์ ๋๋ก ๋ง๋งํ ์ํ์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์น์ ํ์ค์ธ HTML๋ถํฐ ์๋ฒ ์ธก ์ธ์ด์ธ PHP ๋ฑ ๊ณผ์ ์ํ์ ํ์ํ ์ง์์ ํ๋ ๋์ฉ ์ต๋ํ์ต๋๋ค. ์๊ฐ์ด ์ง๋ ๋ค HTML๊ณผ PHP ๊ฐ๊ฐ์ ๋ํ ์ง์์ ์ธํฐ๋ท์ ํตํด ๊ฐ์ข
๊ฐ์๋ฅผ ๋ฃ๊ณ , ์ฑ
์ ์ฝ์ด๋ณด์์ง๋ง ์ด ๋์ ๊ด๊ณ๋ฅผ ๋ช
ํํ ์ค๋ช
ํด ๋์ ๊ณณ์ ์๊ณ , ๊ฒฐ๊ตญ ๋ฌด์์ ๊ณผ์ ํด๊ฒฐ์ ๋์
ํ์ต๋๋ค.
์ง์ ์ํ์ฐฉ์ค๋ฅผ ๊ฒช์ผ๋ฉฐ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ ์ ์ HTML๊ณผ PHP ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํ์
ํ๊ฒ ๋์๊ณ ํ์๋ ์์ ํ ์ดํดํ๊ฒ ๋์ด ์ฑ๊ณต์ ์ผ๋ก ๊ฐ๋จํ ์ผํ๋ชฐ ๊ตฌ์ถ์ ์ฑ๊ณตํ์์ต๋๋ค.
๊ธ์์ 692์
1,168Byte,
Question: ๋ค์ํ ์๊ฒฌ์ด๋ ์ ๋ณด๋ฅผ ์์ ์ ๊ธฐ์ค์ผ๋ก ๋ถ์ / ํ๋จํ๊ณ , ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒฝํ์ ๋ํด์ ์์ ํ์์ค. - ์ต๊ทผ 5๋
์ด๋ด์ ๊ฒฝํ์ผ๋ก ์์ฑํ ๊ฒ - ๋ถ์ํ ์๊ฒฌ ๊ฒ (700 ์ 10 ๋จ๋ฝ ์ด๋ด),
Answer: ์ด๋ฒ ์ฌ๋ฆ ๋ฐฉํ ๋, ์ผํ๋ชฐ ์๋ฃจ์
๊ฐ๋ฐ ์
์ฒด์์ 2๋ฌ ๋์ ์ธํด์ผ๋ก ๊ทผ๋ฌดํ์ต๋๋ค. ๊ณผ์ ๋ ๊ฐ์์ ์ผํ๋ชฐ์ ๋ง๋ค๊ณ ์ผํ๋ชฐ์ ํ์๊ฐ์
์์คํ
๊ณผ ๊ด๋ฆฌ์ ์์คํ
์ ๊ตฌ์ถํ๋ ๊ฒ์ด์์ต๋๋ค.
์ผํ๋ชฐ์ ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ ์๋ฒ, HTML, ํธ์คํ
, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ ๋ค์ํ ๋ถ์ผ์ ์ง์์ด ํ์ํ์ต๋๋ค. ๋น์ ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ดํ ์ง์๋ง ์๋ ์ํ์ฌ์ ์ผํ๋ชฐ ์ค๊ณ์ ํฐ ๊ทธ๋ฆผ์กฐ์ฐจ ๊ทธ๋ ค์ง์ง ์์ ์ ๋๋ก ๋ง๋งํ ์ํ์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์น์ฌ์ดํธ ์ ์์ ํฐ ํ์ ๋ถ์ํ์์ต๋๋ค. ์น์ฌ์ดํธ ์ ์์๋ ์๋ฒ ์ธก, ํด๋ผ์ด์ธํธ ์ธก์์ ์ฌ์ฉํ๋ ์ธ์ด์ ์ด๋ก ์ด๋ฃจ์ด์ง ํ์ด์ง, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ข
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ์ํ์ต๋๋ค.
๊ฐ์ข
์์ ์ ์ฐธ๊ณ ํ์ฌ ์น์ ํ์ค์ธ HTML๋ถํฐ ์๋ฒ ์ธก ์ธ์ด์ธ PHP ๋ฑ ๊ณผ์ ์ํ์ ํ์ํ ์ธ์ด๋ ์ตํ์ง๋ง, ํ๋ก ํธ์๋ ํ์ด์ง์ ๋ฐฑ์๋ ํ์ด์ง ๊ฐ์ ์ํธ์์ฉ์ ์ดํดํ์ง ๋ชปํด ์ด๋ ค์์ ๊ฒช์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ธํฐ๋ท ๊ฐ์ข์ ๋ค์ํ ์ํ์ฐฉ์ค๋ฅผ ํตํด HTML๊ณผ PHP ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํ์
ํ์ต๋๋ค. ์ฌ๋ฌ ๋ฒ์ ์ํ์ฐฉ์ค๋ฅผ ๊ฒช์ ํ์๋ ์น์ฌ์ดํธ์ ์๋ ์๋ฆฌ๋ฅผ ์์ ํ ์ดํดํ๊ฒ ๋์๊ณ ์ฑ๊ณต์ ์ผ๋ก ์ผํ๋ชฐ ์์คํ
์ ๊ตฌ์ถํ๋ ๋ฐ ์ฑ๊ณตํ์์ต๋๋ค.
๊ธ์์ 610์
1,036Byte,
Question: ์ง์๋ถ์ผ์ ๊ด๋ จ๋ ํ์ต๋ด์ฉ(ํ์ฐฝ์์ ์ด์๊ณผ๋ชฉํฌํจ)์ด๋ ํ๋์ฌํญ(์
๋ฌด์ํ๊ฒฝํ์ ์ข์ธก ํ์ฌ๊ฒฝ๋ ฅํญ ํ๋ก์ ํธ ๊ฒฝ๋ ฅ๊ธฐ์ ์๋์ ๊ธฐ์ฌ),
Answer: ์ปดํจํฐ๊ณตํ์ ์ ๊ณตํ๋ฉฐ ์น ํ๋ก๊ทธ๋๋ฐ ๋ถ์ผ์ ๊ด์ฌ์ ๊ฐ๊ณ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๊ณผ ๋ด ์์
์ด ๊ฐ์ค๋์ง ์์ ์ ์์ผ๋ก ๋ฐฐ์ด ๊ฒฝํ์ด ์์ด ๋
ํ์ผ๋ก HTML๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ์ด๊ธ ๊ธฐ์ ๋ง์ ์ตํ๊ณ ์๋ ์ํฉ์ด์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ค ํ๊ตญ๋ฐ์ดํฐ๋ฒ ์ด์ค์งํฅ์์์ ์งํํ๋ Database ๊ฐ๋ฐ์ ์์ฑ๊ณผ์ ์ ์ฐธ์ฌํ์ฌ ์น ํ๋ก๊ทธ๋๋ฐ ๋ถ์ผ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ํ์ตํ๊ณ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ฐ๋ฐ ๊ฒฝํ์ ์์ ์ ์์์ต๋๋ค.
ํ ํ๋ก์ ํธ์ ์ฃผ์ ๋ ์์ทจ์๋ค์ ์คํํ ์ํ์ ๋๋ ์ปค๋ฎค๋ํฐ๋ก ์ ์ ํ์๊ณ , ์์ทจํ๋ ํฐ๋ฅผ ๊ฐ์ถ๋ค๋ ์๋ฏธ๋ก ์ ๋ชฉ์ ‘์์ทจ๋ฅผ ๊ฐ์ถ๋ค’๋ก ํ์์ต๋๋ค. ๋ํธํ, ๊ณต๋๊ตฌ๋งค ๋ฑ ์์ทจ์๋ค์๊ฒ์๋ ‘๋์ ๋์ฅ๊ณ ’ ๊ธฐ๋ฅ์ ๊ณ ์ํ์์ต๋๋ค.
๋ํ ์์ทจ์์ด ๊ฐํธํ๊ฒ ๋ง๋ค ์ ์๋ ์๋ฆฌ ๋ ์ํผ๋ฅผ ์๊ฐํ๊ณ , ๋ ์ํผ ๋ณ ์ฌ๋ฃ๋ฅผ ๋ฑ๋กํ์ฌ ๊ฐ์ง ์ฌ๋ฃ๋ก ๋ง๋ค ์ ์๋ ์๋ฆฌ๋ฅผ ๊ฒ์ํ ์ ์๋๋ก ๊ธฐํํ์์ต๋๋ค.
ํ๋ก์ ํธ๋ ์คํ๋ง ํ๋ ์์์ ํ์ฉํ์ฌ MVC ํจํด์ผ๋ก ๊ตฌ์ฑํ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ค๋ผํด๋ก ๊ตฌ์ถํ์๊ณ mybatis๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ JSP๋ก ์์ฑํ์์ผ๋ฉฐ AJAX๋ฅผ ํ์ฉํ ๊ฐ๋ฐํ์์ต๋๋ค.
์ผ๋ฐ ๊ธ์ ์
๋ก๋ํ๋ ๊ฒ์ํ์ ๋ง๋ค๊ณ ๊ธ ์์ฑ ํ๋ฉด์ ์๋ํฐ๋ฅผ ์ ์ฉํ์ฌ ๋ด์ฉ์ ๋ค์ํ๊ฒ ํธ์งํ ์ ์๋๋ก ํ์์ต๋๋ค. ๋ํ ๋ฒผ๋ฃฉ์์ฅ, ๋ ์ํผ ๋ฑ์ ๊ฒ์ํ์๋ ์ฌ์ง์ ํ์์ ์ผ๋ก ์ฒจ๋๋ค. ๋ ์ํผ๋ฅผ ์
๋ก๋ํ ๋์๋ ํ์ํ ์ฌ๋ฃ๋ฅผ ์ ์ฒด ์ฌ๋ฃ DB์์ ๊ฒ์ํ์ฌ ๋ฑ๋กํ๋๋ก ํ์์ต๋๋ค.
๋ชจ๋ ๊ฒ์ํ์ ํ์ด์ง์ ๊ตฌํํ์๊ณ , ํ์๋ณ ๋ง์ดํ์ด์ง์์ ๋ด๊ฐ ์ด ๊ธ/๋๊ธ์ ๋ณผ ์ ์๊ฒ ํ์์ต๋๋ค. ๋ํ ‘๊ฐ์ง ์ฌ๋ฃ๋ก ๋ง๋ค ์ ์๋ ๋ ์ํผ ๊ฒ์’์ ์ํ์ฌ ๋ง์ดํ์ด์ง์ ‘๋ด ์ฌ๋ฃ๋น์ค๋ฅผ ์์ฉํํ์ง ๋ชปํ์์ง๋ง, ์์ฑ๋ ํ๋ก์ ํธ๋ ๋ฐํ ํ ํฌํ์์ 1๋ฑ ํ์ผ๋ก ์ ๋ฐ๋์๊ณ , ํ์ฌ ๊ต์ก ํ์์ผ๋ก ์งํ๋๋ ๋ฉํ ๋ง์ ์ฐธ์ฌํ์ฌ ์ดํ๋ฆฌ์ผ์ด์
์ผ๋ก ๊ฐ๋ฐ์ ์งํํ๊ณ ์์ต๋๋ค.
๊ธ์์ 1,174์
2,017Byte
์์๋ค๊ณผ ์ ์ ๋ต๋ณ์ ์ฐธ๊ณ ํ์ฌ ์ง๋ฌธ์ ๋ํ ๋๋ต์ ํด ์ฃผ์ธ์.
์์ ์ ๋ณด๋ ๋ค ์์ด๋ณด์ฌ์, ๊ธ์์ ๋ฑ์ ๋ํ ์ ๋ณด๊ฐ ์๋ ๊ฒ ๋นผ๊ณ ๋ ๋ค ๊ด์ฐฎ์ ๋ณด์๋ค.
3. Generate
๋ง์ง๋ง์ผ๋ก ํ๋กฌํํธ๊น์ง ์์ฑ๋์ผ๋, ChatGPT api๋ฅผ ํ์ฉํ์ฌ generate ํ๋ ๋จ๊ณ๋ง ๋จ์๋ค. ์ด์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ค.
#lib/openai_call.py
def get_chat_openai(prompt, model="gpt-4"):
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0,
)
output = response.choices[0].message.content
return output
# GENERATE.py
answer = get_chat_openai(prompt)
if answer:
st.success("๋ต๋ณ์ด ์์ฑ๋์์ต๋๋ค!")
st.write(answer)
else:
st.error("๋ต๋ณ ์์ฑ์ ์คํจํ์ต๋๋ค..")
์ผ๋จ capathy๋์ ์กฐ์ธ์ ๋ฐ๋ผ gpt-4๋ก ์ฝ๋ฉํ๋ค.. ๋ด๋
2. ๊ฒฐ๊ณผ
Streamlit Share๋ก ๋ฐฐํฌํ๋๋ฐ, ๋ฐฐํฌํ ๊ณผ์ ์ ์๋ตํ๊ฒ ๋ค. ์ฐพ์๋ณด๋ฉด ์ฝ๊ณ , secret key๋ requirements.txt๋ง ์ฃผ์ํด์ ์์ฑํ๋ฉด ๊ฑฐ์ ๋ฒํผ ํ๋ ๋ฒ ํด๋ฆญํ๋ ํ์์ผ๋ก ๋ฐฐํฌํ ์ ์์๋ค.
์คํ์ 2๊ฐ ์ ๋์ ๋ฐ์ดํฐ๋ง ์ผ๋จ ํด๋ดค๋๋ฐ, ํ๋๋ ์์ฒญ ์ฑ์ ์๊ฒ ์ด ๋ต๋ณ, ๋๋จธ์ง ํ๋๋ ๊ฝค ์ฑ์ ์๊ฒ ์ด ํผ์จ ๋ต๋ณ์ด๋ค.
๋ ๋ฐ์ดํฐ์ ๋ํ ์คํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์๋ค.
์๋ฌด๋๋ ์ฑ์ ์๊ฒ ์ด ์๊ธฐ์๊ฐ์ ๋ต๋ณ์ด ํจ์ฌ ๋ ๋๋ผ๋งํฑํ ๋ณํ์ฒ๋ผ ๋๊ปด์ง๊ธด ํ๋ค. ใ ใ ใ ใ
3. ๊ฐ์ ์ ๋ฐ ์ถ๊ฐ๊ธฐ๋ฅ
๋ง์ ์ด๋ ๊ฒ ๋ฐฐํฌ๋ ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด ๋ณด๋ ๋์์ง๋ ์์์ง๋ง, ์กฐ๊ธ ๋ ์ข์ ๊ฒฐ๊ณผ๊ฐ ๋์์ผ๋ฉด ํด์ ์ด๋ป๊ฒ ๊ฐ์ ์์ผ ๋ณผ ์ ์์์ง ์๊ฐํด ๋ณด์๋ค.
๊ฐ์ ์
๊ฐ์ฅ ๋จผ์ ๋ ์ค๋ฅธ ๋ฐฉ๋ฒ์ ๊ฐ์ ์์๋ฅผ ํ๋กฌํํธ์ ๋ฃ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ง ๊ทธ๋๋ก ์ ํํ ์ง๋ฌธ์ ๋ํด, ๋ต๋ณ์ ์ด๋ ๋ถ๋ถ์ ๊ฐ์กฐํด์ผ ํ๋์ง๋ฅผ ํ๋กฌํํ .
์ด์ ์ 8๊ฐ์ง์ ํ๋กฌํํธ๋ฅผ ๋๊ณ ์คํํด ๋ณด์์ ๋, ๊ฐ์ ์์๋ฅผ ํ๋กฌํํธ์ ์ ์ํ์ ๋ ๋ ๋์ ํ๋ฆฌํฐ์ ๋ต๋ณ์ ์์ฑํ์๋ค.
- ์์: ์ง์๋๊ธฐ
- ์๊ธฐ์๊ฐ์ ์ง์๋๊ธฐ๋ ‘๋ด๊ฐ ์ ์คํ๊ฒ ๊ณจ๋ผ์ ์ง์ํ ํ์ฌ’๋ผ๋ ๋๋์ ์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ์๊ธฐ ๋ถ์(์ง์ ๊ด, ์ฑํฅ ๋ฑ)๊ณผ ํ์ฌ๋ถ์์ ํตํด ์ง์ ์ด์ ์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๋ฅผ ์ฐพ์์ผ ํ๋ค. ํ์ฌ ํํ์ด์ง๋ฅผ ํตํด ํ์ฌ์ ๋น์ ๊ณผ ์ฃผ๋ ฅ์ฌ์ ํํฉ, ํฅํ ๊ฒฝ์๋ ฅ ๋ฑ์ ํ์ ํ๊ณ , ๋ณธ์ธ์ ์ง์ ๊ด๊ณผ ์ฐ๊ฒฐ์์ผ ํ์ฌ์ ๋ํ ์ ์ ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ข๋ค. - ํ์ฌ์ ๋น์ ๊ณผ ๋ฌธํ, ์ฌ์ ๋ฐฉํฅ์ฑ ๋ฑ๊ณผ ๋ณธ์ธ์ ์ง์ ๊ด ๋ฑ์ ์ฎ์ด ์ ์ ์ ์ ์ํ๋ค๋ฉด, ์ง์ํ ์ง๋ฌด์ ํต์ฌ์ญ๋๊ณผ ์์ ์ ๊ฐ์ /๊ฒฝํ์ ์ฐ๊ฒฐ์์ผ ์ง์ ์ด์ ๋ฅผ ๋์ฑ ๋ณด๊ฐํ๋ ๊ฒ์ด ํ์ํ๋ค. - ์ง์๋๊ธฐ์ ์ ์ฌ ํ ํฌ๋ถ๋ฅผ ํ ๋ฌธํญ์ ํจ๊ป ๋ฌผ์ด๋ณด๋ ๊ฒฝ์ฐ๋ ์ข ์ข ์๋ค. ํ์ฌ์ ์ง๋ฌด์ ์ ํฉํ ๋ณธ์ธ์ ๊ฐ์ ๊ณผ ๋๋ถ์ด ์ ์ฌํ๊ธฐ ์ํด ์ง๊ธ๊น์ง ํด ์จ ๋ ธ๋ ฅ๋ค์ ๊ทผ๊ฑฐ๋ก, ์ ์ฌ ํ ์กฐ์ง์ ๊ตฌ์ฑ์์ผ๋ก์ ๋ฌด์จ ์ผ์ ํ๊ณ ์ด๋ค ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ณ ์ถ์์ง ๋งํด ์ฃผ๋ฉด ์ข๋ค. ๋ฌ์ฑ ๋ชฉํ์ ๊ฒฝ์ฐ ํ์ค์ฑ ์๋ ๊ธฐ๊ฐ๊ณผ ๋ชฉํ์น๋ฅผ ์ ์ํ๋ค๋ฉด ๋์ฑ ๊ธ์ ์ ์ธ ์ธ์์ ๋จ๊ธธ ์ ์๋ค.
๋ณดํธ์ ์ธ ์ง๋ฌธ๋ค์ ๋ํด, ๊ฐ ์ง๋ฌธ๋ณ๋ก ์ด๋ค ๊ฐ์ ์์๊ฐ ์์์ง ๋ฆฌ์์นํ์ฌ, ์ด๋ค ์ง๋ฌธ์ ์ ํํ๋ฉด ๊ทธ ์ง๋ฌธ์ ํด๋นํ๋ ๊ฐ์ ์์๊ฐ ํ๋กฌํํ ๋๋๋ก ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค. ์ฌ๋์ธ ์๊ธฐ์๊ฐ์ ๊ฐ์ด๋๋ผ์ธ
- ๋์ค์๋ ๋ณดํธ์ ์ธ ์ง๋ฌธ๋ค์ด ์๋, ์ฌ์ฉ์๊ฐ ์ง์ ๋ง์ฃผํ ์ง๋ฌธ์ ์์ฑํ๊ฒ ํ ์์ ์ธ๋ฐ, ์ด ๊ฒฝ์ฐ์๋ LLM์๊ฒ ์ด๋ค ๋ถ๋ถ์ ๊ฐ์กฐํด์ผ ํ ์ง์ ๋ํด์ ๋ฌผ์ด๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค.
์ถ๊ฐ ๊ธฐ๋ฅ
์ด ์น ํ์ด์ง๋ฅผ ๋ง๋ค๋ฉด์, ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋ํ ์์ฌ์ด ๋ ์๊ฒจ๋ฌ๋ค.
- ์๊ธฐ์๊ฐ์ ๊ฐ์ด๋๋ผ์ธ ์ ์
- ์ ํํ ์ง๋ฌธ์ ๋ํด์ LLM์๊ฒ ๊ฐ์ด๋๋ผ์ธ์ ๋ง๋ค์ด๋ฌ๋ผ๊ณ ํ๊ณ , ์ ๋ ฅ๋์ ์์ฑ๋ ๊ฐ์ด๋๋ผ์ธ์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด๋ค.
- ์ค์๊ฐ ๊ธฐ์
์ ๋ณด ํ๋กฌํํ
- ํ์ฌ ๊ธฐ์ ์ด ์ด๋ค ๋ฐฉํฅ์ผ๋ก ์ง์คํ๊ณ ์๋์ง ๋ฑ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ , ํด๋น ์ ๋ณด๋ฅผ ํ๋กฌํํธ์ ๋ฃ๋ ๊ฒ์ด๋ค.
- ์ด๋ฐ ๊ฒฝ์ฐ์๋, ์์ ์ด ์ง์ํ ๊ธฐ์ ์ ์์ฑํด์, ์ค์๊ฐ์ผ๋ก ํด๋น ๊ธฐ์ ์ ๋ํ ๊ธฐ์ฌ๋ฅผ ํฌ๋กค๋งํด ์ค๋ ๊ฒ์ ๋ง๋ ์ ๋๋ค.
- ๋ฐ๋ผ์, 10๊ฐ ๋ด์ธ์ ์ค์๊ฐ ๊ธฐ์ ์ ๋ณด๋ฅผ ํฌ๋กค๋งํด์ค๋ ์์ ์ ์๋ํํ์ฌ DB์ ์ ์ฅํด ๋๊ณ , ์ฌ์ฉ์๋ค์ด ํด๋น ๊ธฐ์ ์ ๊ณ ๋ฅด๊ฒ ํ๋ ์๋ฐ์ ์์ ๊ฒ ๊ฐ์. (์ฌ์ฉ์๊ฐ ๋ง์์ง๋ฉด ์ด์ฉ ๊ฐ๋ฅํ๊ฒ ๋๋ ๊ธฐ์ ์ ๊ฐ์๋ ๋์ด๋๊ฒ ์ง....!!)
- ์ฌ์ฉ์ ํผ๋๋ฐฑ ์์ฉ
- ์ด๊ฑด ์ฐ๋ฆฌ ๊ต์๋๊ป์ ์ฃผ์ ํผ๋๋ฐฑ์ธ๋ฐ, ์์ฑ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ํด ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ๋ฐ์์ ๋ณํ์ํค๋ ๊ฒ๋ ๊ด์ฐฎ์ ์์์ผ ๊ฒ ๊ฐ๋ค๊ณ ํ์ จ๋ค. ์๋ง ๊ทธ๋ผ ui๋ ์ด๋ฐ ๋๋์ผ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๋ฐ๋ชจ ์๋น์ค๋ฅผ ์์ฑ์์ผฐ๋ค !!!!
๋ง์ ์ฝ๋๋ฅผ ์ง๋ค ๋ณด๋, ์๊ทผ ๋จ์ํ ์์ ๋ค์ด์๊ณ , ๋ญ๊ฐ ์ข ๋ ๋นจ๋ฆฌ ์์ง๋ฅผ ๊ฐ์ง๊ณ ํ์ผ๋ฉด ๋นจ๋ฆฌ ๋๋ผ ์ ์์์ ๊ฒ ๊ฐ๋ค.
ํ์ง๋ง ๊ฒฐ๊ณผ๋ฌผ์ด ๋์์ผ๋ ํํ๋ ์๋ค! ใ ใ ใ
์์ผ๋ก๋ ์ด ๋ฐ๋ชจ ์๋น์ค๋ก ์ฌ์ฉ์ ํ ์คํ ์ ์ข ํด๋ณด๊ณ , ์ธํฐ๋ทฐ & ํผ๋๋ฐฑ์ ํตํด ์ฐ๋ฆฌ ์๋น์ค๊ฐ ์ด๋ค ์ ์ด ์ข๊ณ ์ด๋ค ์ ์ด ๋ถ์กฑํ ์ง ๋ฑ์ ๋ํด ๋ง์ด ๋ค์ด๋ณด๊ณ ์ถ๋ค.
ํน์ ์ด ๊ธ์ ๋ณด๊ณ ๋ฐ๋ชจ๋ฅผ ์ฌ์ฉํด๋ณด๊ณ , ๋๊ธ๋ก ํผ๋๋ฐฑ ๋จ๊ฒจ์ฃผ์ ๋ ๋๋ฌด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค !!
'๐ป ํ๋ก์ ํธ > ๐ RESUMAI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[RESUMAI] 6. ์๋น์ค ๊ฐ๋ฐ ์์ - DRF ์นด์นด์ค ์์ ๋ก๊ทธ์ธ, ์ด๊ฒ๋ง ๋ณด๋ฉด ํ๋ฒ์ ๋!! (0) | 2024.05.25 |
---|---|
[RESUMAI] 4. ๋ฐ์ดํฐ ํฌ๋กค๋ง๊ณผ vectorDB ์ ์ฅ (1) | 2024.01.02 |
[RESUMAI] 3. RAG์ ๋์ ๊ณผ ์๊ธฐ์๊ฐ์ ํฌ๋กค๋ง (1) | 2023.12.21 |
[RESUMAI] 2. ํ๋กฌํํธ ์คํ (2) | 2023.11.12 |
[RESUMAI] 1. ์ฐ๋ก ๋ง๋๋ ์์์์ ์์ / ๊ธฐํ (0) | 2023.11.03 |