Sign In
๐Ÿงฑ ํ—ˆ์„ธ ๋ฆฌ์ŠคํŠธ

๐Ÿ”— ๐Ÿฆœ Langchain ์œ ํŠœ๋ธŒ๋กœ ์˜์–ด์ž๋ฃŒ๋งŒ๋“ค๊ธฐ

Huhsame
์•ˆ๋…•ํ•˜์„ธ์š”. 7๊ธฐ ๋žญ์ฒด์ธ ์Šคํ„ฐ๋””์—์„œ ํ™œ๋™์ค‘์ธ ํ—ˆ์„ธ์ž„์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ œ๊ฐ€ ์˜ฌ๋ ธ๋˜ ์ง€๋‚œ๋ฒˆ ์œ ํŠœ๋ธŒ๋กœ ์˜์–ด๊ณต๋ถ€ํ•˜๋Š” ๋ฒ•์„ streamlit๊ณผ ๋žญ์ฒด์ธ์„ ์ด์šฉํ•ด ์›น์„œ๋น„์Šค๋กœ ๊ตฌํ˜„ํ•ด๋ณด๋ คํ•ฉ๋‹ˆ๋‹ค.
์šฐ์„  ์™„์„ฑ๋œ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

๊ตฌํ˜„์‹œ์ž‘

์œ ํŠœ๋ธŒ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ œ๊ฐ€ ์›ํ•˜๋Š” ์˜์–ด ์ž๋ฃŒ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด 3๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
1.
์œ ํŠœ๋ธŒ transcript ๋ฐ›์•„์˜ค๊ธฐ
2.
๋ฌธ์žฅ 10๊ฐœ ์ถ”์ถœํ•˜๊ธฐ
3.
์ถ”์ถœํ•œ ๋ฌธ์žฅ๋“ค์— ๋Œ€ํ•ด ์˜ˆ๋ฌธ์„ ํฌํ•จํ•œ ์‚ฌ์ „๋งŒ๋“ค๊ธฐ

์œ ํŠœ๋ธŒ transcrpit ๋ฐ›์•„์˜ค๊ธฐ

๋žญ์ฒด์ธ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์†Œ์Šค์—์„œ ํ†ตํ•ฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ํŽธ๋ฆฌํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. document์—์„œ youtube์— ๊ด€๋ จ๋œ ๋ถ€๋ถ„์„ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์›ํ•˜๋Š” ์œ ํŠœ๋ธŒ์˜ transcript๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
from langchain.document_loaders import YoutubeLoader import ssl ssl._create_default_https_context = ssl._create_unverified_context # ssl ์ฝ”๋“œ ๋ถ€๋ถ„์„ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค loader = YoutubeLoader.from_youtube_url(ytURL) yt = loader.load() transcript = yt[0].page_content

์ฒด์ธ ์„ค๊ณ„ํ•˜๊ธฐ

์ด ์„ธ๋‹จ๊ณ„์ค‘์—์„œ 2์™€ 3๋‹จ๊ณ„๋Š” ์ง์ ‘ ๋žญ์ฒด์ธ์„ ์ด์šฉํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ฒด์ธ์„ 2๊ฐœ ์ƒ์„ฑํ•˜๊ณ , ์ฒด์ธ1์—์„œ ๋ฐ›์•„์˜จ ๋Œ€๋‹ต์„ ํ™œ์šฉํ•ด์„œ ์ฒด์ธ2๋ฅผ ๋Œ๋ ค์•ผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋žญ์ฒด์ธ ๋„ํ๋จผํŠธ์—์„œ ๋ฉ€ํ‹ฐํ”Œ์ฒด์ธ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กฌํฌํŠธ ํƒฌํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ด์„œ ์ฒด์ธ์„ ์ž‘์„ฑํ•˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ์‚ฌ๋ก€๋ฐœํ‘œ๋•Œ ํ–ˆ๋˜ AI์˜ˆ์–ธ๊ฐ€ ์—์„œ๋Š” ๊ทธ๋ƒฅ ์ŠคํŠธ๋ง์œผ๋กœ ๋•Œ๋ ค๋„ฃ์—ˆ๋Š”๋ฐ, ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋‹ˆ ์ž‡ํ’‹ ์•„์›ƒํ’‹์„ ๋„˜๊ฒจ์ฃผ๊ธฐ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํ”Œ์ฒด์ธ์€ ์ฒด์ธ2์— ์ฒด์ธ1์„ ํฌํ•จ์‹œ์ผœ์„œ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋ถ„์„ ํ™•์ธํ•˜๊ณ , ์ด๋ฅผ ์ฐธ์กฐํ•ด์„œ, ์ œ๊ฐ€ ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด๋ด…๋‹ˆ๋‹ค.
from langchain.chat_models import ChatOpenAI from langchain.prompts import ChatPromptTemplate from langchain.schema import StrOutputParser model = ChatOpenAI( model="gpt-4", temperature=0.7, max_tokens=7000, ) def generate_sentence_and_dict(transcript): prompt1 = ChatPromptTemplate.from_template( "๋‹น์‹ ์€ IELTS๋‚˜ TOEFL ์‹œํ—˜์„ ์ค€๋น„ํ•˜๋Š” ํ•œ๊ตญ์ธ์„ ์œ„ํ•œ ํƒ์›”ํ•œ ์˜์–ด ๊ต์‚ฌ์ž…๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ ์ค‘์—์„œ ์˜์–ด ์Šคํ”ผํ‚น ๊ณต๋ถ€์— ์œ ์šฉํ•œ ์˜์–ด๋ฌธ์žฅ 10๊ฐœ๋ฅผ ๋ฝ‘์•„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. \n\n {transcript}" ) prompt2 = ChatPromptTemplate.from_template( "์ฃผ์–ด์ง„ ๊ฐ 10๋ฌธ์žฅ์—์„œ ๊ตฌ๋™์‚ฌ๋‚˜ ์ˆ™์–ด์— ๊ด€ํ•œ ์‚ฌ์ „์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. ์‚ฌ์ „์€ ํ‘œ์ œ์–ด(๊ตฌ๋™์‚ฌ๋‚˜ ์ˆ™์–ด), ํ•œ๊ธ€ ๋œป, ์›๋ž˜ ์˜์–ด ๋ฌธ์žฅ, ๊ทธ๋ฆฌ๊ณ  ํ”„๋ Œ์ฆˆ ์‹œํŠธ์ฝค์—์„œ์˜ ์˜์–ด ์˜ˆ๋ฌธ์„ ํฌํ•จํ•œ ์‚ฌ์ „ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ œ์ž‘ํ•ด์ฃผ์„ธ์š”. ์›๋ž˜ ์˜์–ด ๋ฌธ์žฅ๊ณผ ํ”„๋ Œ์ฆˆ ์˜์–ด ์˜ˆ๋ฌธ์—์„œ ํ‘œ์ œ์–ด์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์€ ๋ณผ๋“œ ์ฒ˜๋ฆฌํ•ด์ฃผ์„ธ์š”. ```1. **[ํ‘œ์ œ์–ด]**\n - ๋œป: [ํ‘œ์ œ์–ด์˜ ํ•œ๊ธ€ ๋œป]\n - ์›๋ž˜ ๋ฌธ์žฅ ์˜ˆ์‹œ: [์›๋ž˜ ์˜์–ด ๋ฌธ์žฅ]\n - ํ”„๋ Œ์ฆˆ ์˜ˆ๋ฌธ: [ํ”„๋ Œ์ฆˆ ์‹œํŠธ์ฝค์—์„œ์˜ ์˜์–ด ์˜ˆ๋ฌธ]```\n\n {sentence_list} " ) chain1 = prompt1 | model | StrOutputParser() chain2 = {"sentence_list": chain1} | prompt2 | model | StrOutputParser() response = chain2.invoke({"transcript": transcript}) return response
๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ๋งŒํผ ํŽธํ•œ๊ฒŒ ์—†์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐ๋Š” ๋™์ผํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์˜ ๋‚ด์šฉ๋งŒ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.
โ€ข
์ฒซ๋ฒˆ์งธ ์ฒด์ธ: transcript โ†’ sentence list
โ€ข
๋‘๋ฒˆ์งธ ์ฒด์ธ: sentence list โ†’ dictionary

Trouble Shooting

๋ชจ๋ธ ํ† ํฐ ์ œํ•œ

์œ ํŠœ๋ธŒ transcript์˜ ๊ธธ์ด ๋•Œ๋ฌธ์ธ์ง€ gpt-4 ๋ชจ๋ธ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‚˜๋ด…๋‹ˆ๋‹ค. chatgpt์—์„œ๋Š” ๊ฐ™์€์˜์ƒ์œผ๋กœ ํ•œ๋ฒˆ์— ๊ฐ€๋Šฅํ–ˆ๋Š”๋ฐ, ์ด๊ฒŒ ๋ฉ€ํ‹ฐํ”Œ ์ฒด์ธ์ด์–ด์„œ ๊ทธ๋Ÿฐ์ง€ ๊ฐ๊ฐ ๋”ฐ๋กœ ๋ณด๋‚ด๋ฉด ๊ดœ์ฐฎ์€๊ฑด์ง€ ์•Œ๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค.
์–ด์ฉ”์ˆ˜ ์—†์ด gpt-3.5-turbo-16k-0613๋ชจ๋ธ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์†Œ ๋ฉ์ฒญํ•œ ๊ฒฐ๊ณผ

3.5๋กœ ๋Œ๋ฆฌ์ž๋งˆ์ž ๋ฐ”๋ณด๊ฐ™์ด ํ•œ๊ธ€ ํ‘œํ˜„์œผ๋กœ ์‚ฌ์ „์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์กฐ๊ธˆ์€ ๋ฉ์ฒญํ•œ 3.5๋ฅผ ์œ„ํ•ด ํ”„๋กฌํ”„ํŠธ๋ฅผ ์กฐ๊ธˆ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์ž‘์„ฑํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜์–ด ํ‘œ์ œ์–ด๋ฅผ ์ ๊ณ  ์˜์–ด ๋ฌธ์žฅ์„ ์ ๊ณ  ํ•œ๊ธ€ ๋œป์„ ์ ์–ด๋ผ
prompt2 = ChatPromptTemplate.from_template( "์ฃผ์–ด์ง„ ๊ฐ 10๋ฌธ์žฅ์—์„œ ๊ตฌ๋™์‚ฌ๋‚˜ ์ˆ™์–ด์— ๊ด€ํ•œ ์‚ฌ์ „์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. ์‚ฌ์ „์€ ํ‘œ์ œ์–ด(๊ตฌ๋™์‚ฌ๋‚˜ ์ˆ™์–ด), ํ•œ๊ธ€ ๋œป, ์›๋ž˜ ์˜์–ด ๋ฌธ์žฅ, ๊ทธ๋ฆฌ๊ณ  ํ”„๋ Œ์ฆˆ ์‹œํŠธ์ฝค์—์„œ์˜ ์˜์–ด ์˜ˆ๋ฌธ์„ ํฌํ•จํ•œ ์‚ฌ์ „ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ œ์ž‘ํ•ด์ฃผ์„ธ์š”. ์›๋ž˜ ์˜์–ด ๋ฌธ์žฅ๊ณผ ํ”„๋ Œ์ฆˆ ์˜์–ด ์˜ˆ๋ฌธ์—์„œ ํ‘œ์ œ์–ด์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์€ ๋ณผ๋“œ ์ฒ˜๋ฆฌํ•ด์ฃผ์„ธ์š”. ```1. **[ํ‘œ์ œ์–ด]**\n - ๋œป: [ํ‘œ์ œ์–ด์˜ ํ•œ๊ธ€ ๋œป]\n - ์›๋ž˜ ๋ฌธ์žฅ ์˜ˆ์‹œ: [์›๋ž˜ ์˜์–ด ๋ฌธ์žฅ]\n - ํ”„๋ Œ์ฆˆ ์˜ˆ๋ฌธ: [ํ”„๋ Œ์ฆˆ ์‹œํŠธ์ฝค์—์„œ์˜ ์˜์–ด ์˜ˆ๋ฌธ]```\n\n {sentence_list} " )

์™„์„ฑ ๊ฒฐ๊ณผ

๊ฒฐ๊ณผ๋Š” ์›ํ•˜๋Š”๋Œ€๋กœ ์˜ˆ์˜๊ฒŒ ๋‚˜์™”๋„ค์š”. ํด๋ฆญ ํ•œ๋ฒˆ์— ์œ ํŠœ๋ธŒ ๋งํฌ๊ฐ€ ์ด๋ ‡๊ฒŒ ์˜์–ด์‚ฌ์ „์œผ๋กœ ๋ฐ”๋€Œ๋Š”๊ฒŒ ์‹ ๊ธฐํ•  ๋”ฐ๋ฆ„์ž…๋‹ˆ๋‹ค.. ๋‹ค๋งŒ ๊ตฌ๋™์‚ฌ๋‚˜ ์ˆ™์–ด์— ๋Œ€ํ•ด ์•Œ๊ณ ์‹ถ์—ˆ๋Š”๋ฐ, ํ‘œ์ œ์–ด๊ฐ€ ๋‹ค์†Œ ๊ฐ„๋‹จํ•œ ๊ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”„๋ Œ์ฆˆ ์˜ˆ๋ฌธ์„ ํ†ตํ•ด ์กฐ๊ธˆ ๋” ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ์˜ ์ ์šฉ์„ ์•Œ๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ 3.5๋ชจ๋ธ์ด์–ด์„œ ๊ทธ๋Ÿฐ์ง€ ์›๋ž˜ ๋ฌธ์žฅ๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์•„ ์•„์‰ฝ์Šต๋‹ˆ๋‹ค. 4๋ฅผ ์ด์šฉํ•  ๋• ๊ฑฐ์˜ ์ž‘๊ฐ€์ˆ˜์ค€์ด์—ˆ๋Š”๋ฐ ๋ง์ด์ฃ ..

gpt-4 ๊ฒฐ๊ณผ์™€ ๋น„๊ต

ํ—คํ—ค ๊ทธ๋ž˜๋„ ๋ฟŒ๋“ฏํ•ฉ๋‹ˆ๋‹น ๐Ÿ˜Ž

๋А๋‚€์ 

1.
๋žญ์ฒด์ธ์—์„œ ์œ ํŠœ๋ธŒ๊ฐ™์ด ๋‹ค๋ฅธ ์†Œ์Šค๋ฅผ ํ•จ๊ป˜ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๋งค๋ ฅ์ ์ด๋‹ค.
2.
์—ฌ๋Ÿฌ ์ฒด์ธ์„ ์“ธ๋•Œ ๊ฐ ์ฒด์ธ์— ๋”ฐ๋ผ ํ† ํฐ์„ ์–ด๋–ป๊ฒŒ ๊ณ„์‚ฐํ•˜๋Š”์ง€ ์•Œ์•„๋ณผํ•„์š”๊ฐ€ ์žˆ๋‹ค.
3.
๋‚˜.. ์–ด์ฉŒ๋ฉด ๋žญ์ฒด์ธ ์Šคํ„ฐ๋”” ๊ณ„์†ํ•ด๋„ ๋ ์ง€๋„..?

ํ”ผ๋“œ๋ฐฑ

โ€ข
์ œ์ด์ŠจํŒŒ์„œ๋กœ 10๋ฌธ์žฅ์„ ๋‹ค ๋”ฐ๋กœ ๋ณด๋‚ด๋ฉด ํ† ํฐ๋ฌธ์ œ ํ•ด๊ฒฐํ• ๊ฒƒ
โ—ฆ
์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆด๊ฒƒ
โ€ข
๋Œ€๋ณธ์„ ํ•œ๋ฒˆ์— ๋„ฃ์ง€๋ง๊ณ  ๋ฒกํ„ฐ๋””๋น„ ๋ถ€๋ถ„์„ ๋ด๋ฐ”๋ผ
Subscribe to 'huhsame'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to 'huhsame'!
Subscribe
๐Ÿ‘๐Ÿป
1