- 강의 질문
- 인공지능
Perplexity 프로젝트의 비디오 툴 구현 오류
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.tools import YouTubeSearchTool
from langchain_community.document_loaders import YoutubeLoader
from langchain_core.documents import Document
import ast
youtube_search_tool = YouTubeSearchTool()
@tool
def video_tool(query:str) -> str:
"""
Retriever tool for the transcript of a YouTube video.
If user want to find some information, this tool is good to gather youtube video information.
query should be given in string format.
"""
#query에 해당하는 Youtube 비디오 URL 가져오기
urls = youtube_search_tool.run(query)
urls = ast.literal_eval(urls)
#URL 순회하면서 Document 객체에 내용 담기
docs = []
for url in urls:
loader = YoutubeLoader.from_youtube_url(
url,
add_video_info=True,
language=["en", "ko"]
)
scripts = loader.load()
script_content = scripts[0].page_content
title=scripts[0].metadata['title']
author=scripts[0].metadata['author']
doc = Document(page_content=script_content, metadata={"source": url, "title":title, "author":author})
docs.append(doc)
#모든 비디오의 내용을 벡터DB에 담기
text_splitter = RecursiveCharacterTextSplitter(
separators = ["\n\n", "\n", ".", ",", " ", ""],
chunk_size=1000,
chunk_overlap=0)
texts = text_splitter.split_documents(docs)
embeddings = OpenAIEmbeddings()
db = Chroma.from_documents(texts, embeddings)
retriever = db.as_retriever()
retrieved_docs = retriever.invoke(query)
video_results = []
for doc in retrieved_docs:
title = doc.metadata.get('title', 'No title available')
author = doc.metadata.get('author', 'No author available')
script_content = doc.page_content
video_info = f"""
Video Information:
------------------
Title: {title}
Author: {author}
Transcript:
{script_content}
------------------
"""
video_results.append(video_info)
# Join all video results into a single string
all_video_results = "\n\n".join(video_results)
return all_video_results
강사님이 제공해주신 자료로도 도저히 실행이 안되어 문의 드립니다.
HTTPDefaultErrorHandler.http_error_default(self, req, fp, code, msg, hdrs) 642 def http_error_default(self, req, fp, code, msg, hdrs): --> 643 raise HTTPError(req.full_url, code, msg, hdrs, fp) HTTPError: HTTP Error 400: Bad Request
위와같은 에러가 발생합니다.
Youtube data api키도 발급해보고
ssl 설정도 해보고 도저히 안되네요 ㅠㅠ
urls for문 안의 YoutubeLoader에서 load() 함수 호출시 에러가 발생하는것 같습니다. 아무리 찾아봐도 해결이 안되네요 ㅠㅠ 어떻게 해결해야할까요?