Zephyrnet Logosu

Langchain ile YouTube Videoları İçin Bir ChatGPT Oluşturun

Tarih:

Giriş

Görüntülü sohbet etmenin ne kadar iyi olacağını hiç merak ettiniz mi? Ben de bir blog insanı olarak, ilgili bilgileri bulmak için bir saatlik bir video izlemek sık sık beni sıkıyor. Bazen yararlı bilgiler edinmek için video izlemek bir iş gibi geliyor. Bu yüzden, YouTube videoları veya herhangi bir video ile sohbet etmenizi sağlayan bir sohbet robotu oluşturdum. Bu, GPT-3.5-turbo, Langchain, ChromaDB, Whisper ve Gradio ile mümkün oldu. Bu nedenle, bu makalede, Langchain ile YouTube videoları için işlevsel bir sohbet robotu oluşturmaya yönelik bir kod incelemesi yapacağım.

Öğrenme hedefleri

  • Gradio kullanarak web arayüzünü oluşturun
  • Whisper kullanarak YouTube videolarını yönetin ve metin verilerini ayıklayın
  • Metinleri uygun şekilde işleyin ve biçimlendirin
  • Metin verilerinin gömmelerini oluşturma
  • Veri depolamak için Chroma DB'yi yapılandırın
  • OpenAI chatGPT, ChromaDB ve katıştırma işleviyle bir Langchain konuşma zinciri başlatın
  • Son olarak, Gradio chatbot'a yanıtların sorgulanması ve akışı

Kodlama kısmına geçmeden önce kullanacağımız araç ve teknolojilere bir göz atalım.

Bu makale, Veri Bilimi Blogatonu.

İçindekiler

Uzun zincir

Langchain, Python'da yazılmış ve Büyük Dil Modelleri verilerini bilinçli ve aracı hale getiren açık kaynaklı bir araçtır. Peki bu ne anlama geliyor? GPT-3.5 ve GPT-4 gibi ticari olarak temin edilebilen LLM'lerin çoğunun, üzerinde eğitildikleri verilerde bir sınırı vardır. Örneğin, ChatGPT yalnızca önceden gördüğü soruları yanıtlayabilir. Eylül 2021'den sonraki herhangi bir şey onun için bilinmiyor. Bu, Langchain'in çözdüğü temel sorundur. Bir Word belgesi veya herhangi bir kişisel PDF olsun, verileri bir LLM'ye besleyebilir ve insan benzeri bir yanıt alabiliriz. Yalnızca Langchain kullanarak bir AI uygulaması oluşturmayı kolaylaştıran Vector DB'ler, Sohbet modelleri ve katıştırma işlevleri gibi araçlar için sarmalayıcılara sahiptir.

Langchain ile Youtube Videoları

Langchain ayrıca Ajanlar - LLM botları oluşturmamıza da olanak tanır. Bu otonom aracılar, veri analizi, SQL sorgulama ve hatta temel kodlar yazma dahil olmak üzere birden çok görev için yapılandırılabilir. Bu aracıları kullanarak otomatik hale getirebileceğimiz pek çok şey var. Bu, düşük seviyeli bilgi çalışmalarını bir LLM'ye devrederek bize zaman ve enerji tasarrufu sağlayabileceğimiz için faydalıdır.

Bu projede, videolar için bir sohbet uygulaması oluşturmak üzere Langchain araçlarını kullanacağız. Langchain hakkında daha fazla bilgi için, ziyaret edin resmi site.

Fısıltı

Fısıltı OpenAI'nin bir başka neslidir. Sesi veya videoları metne dönüştürebilen genel amaçlı bir konuşmayı metne dönüştürme modelidir. Çok dilli çeviri, konuşma tanıma ve sınıflandırma gerçekleştirmek için büyük miktarda çeşitli ses üzerinde eğitilmiştir.

Model, hız ve doğruluk ödünleşimleri ile minik, temel, orta, küçük ve büyük beş farklı boyutta mevcuttur. Modellerin performansı da dile bağlıdır. Aşağıdaki şekil, büyük v2 modelini kullanan Fleur veri kümesinin dillerine göre bir WER (Kelime Hata Oranı) dökümünü göstermektedir.

fısıltı | GitHub | Langchain ile Youtube Videoları
Kaynak: https://github.com/openai/whisper

Vektör Veritabanları

Çoğu makine öğrenimi algoritması, resimler, ses, video ve metinler gibi ham yapılandırılmamış verileri işleyemez. Vektör yerleştirme matrislerine dönüştürülmeleri gerekir. Bu vektör gömmeleri, söz konusu verileri çok boyutlu bir düzlemde temsil eder. Yerleştirmeleri elde etmek için, verilerin anlamsal anlamını yakalayabilen yüksek verimli derin öğrenme modellerine ihtiyacımız var. Bu, herhangi bir AI uygulaması yapmak için son derece önemlidir. Bu verileri depolamak ve sorgulamak için, bunları etkili bir şekilde işleyebilen veritabanlarına ihtiyacımız var. Bu, vektör veritabanları adı verilen özel veritabanlarının oluşturulmasıyla sonuçlandı. Orada birden fazla açık kaynaklı veri tabanı var. Chroma, Milvus, Weaviate ve FAISS en popüler olanlardan bazılarıdır.

Vektör depolarının bir başka USP'si de, yapılandırılmamış veriler üzerinde yüksek hızlı arama işlemleri gerçekleştirebilmemizdir. Yerleştirmeleri aldıktan sonra, bunları kümeleme, arama, sıralama ve sınıflandırma için kullanabiliriz. Veri noktaları bir vektör uzayında olduğundan, ne kadar yakından ilişkili olduklarını bilmek için aralarındaki mesafeyi hesaplayabiliriz. Benzer veri noktalarını bulmak için Kosinüs Benzerliği, Öklid Mesafesi, KNN ve ANN (Yaklaşık En Yakın Komşu) gibi çoklu algoritmalar kullanılır.

Kullanacağız Renk parlaklığı vektör deposu - açık kaynaklı bir vektör veritabanı. Chroma ayrıca çok kullanışlı olacak Langchain entegrasyonuna sahiptir.

Gradio

Gradio uygulamamızın dördüncü atlısı, makine öğrenimi modellerini kolayca paylaşmak için açık kaynaklı bir kitaplıktır. Bileşenleri ve Python ile etkinlikleriyle demo web uygulamaları oluşturmaya da yardımcı olabilir.

Gradio ve Langchain'e aşina değilseniz, devam etmeden önce aşağıdaki makaleleri okuyun.

Şimdi onu inşa etmeye başlayalım.

Dev Env'i Kur

Geliştirme ortamını ayarlamak için bir Python oluşturun sanal çevre veya Docker ile yerel bir geliştirme ortamı oluşturun.

Şimdi tüm bu bağımlılıkları kurun

pytube==15.0.0
gradio == 3.27.0
openai == 0.27.4
langchain == 0.0.148
chromadb == 0.3.21
tiktoken == 0.3.3
openai-whisper==20230314 

Kütüphaneleri İçe Aktar

import os
import tempfile
import whisper
import datetime as dt
import gradio as gr
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chat_models import ChatOpenAI
from langchain.chains import ConversationalRetrievalChain
from pytube import YouTube
from typing import TYPE_CHECKING, Any, Generator, List

Web Arayüzü Oluştur

Uygulamamızın ön ucunu oluşturmak için Gradio Block ve bileşenlerini kullanacağız. İşte arayüzü nasıl yapacağınız aşağıda açıklanmıştır. Uygun gördüğünüz gibi özelleştirmekten çekinmeyin.

with gr.Blocks() as demo: with gr.Row(): # with gr.Group(): with gr.Column(scale=0.70): api_key = gr.Textbox(placeholder='Enter OpenAI API key', show_label=False, interactive=True).style(container=False) with gr.Column(scale=0.15): change_api_key = gr.Button('Change Key') with gr.Column(scale=0.15): remove_key = gr.Button('Remove Key') with gr.Row(): with gr.Column(): chatbot = gr.Chatbot(value=[]).style(height=650) query = gr.Textbox(placeholder='Enter query here', show_label=False).style(container=False) with gr.Column(): video = gr.Video(interactive=True,) start_video = gr.Button('Initiate Transcription') gr.HTML('OR') yt_link = gr.Textbox(placeholder='Paste a YouTube link here', show_label=False).style(container=False) yt_video = gr.HTML(label=True) start_ytvideo = gr.Button('Initiate Transcription') gr.HTML('Please reset the app after being done with the app to remove resources') reset = gr.Button('Reset App') if __name__ == "__main__": demo.launch() 

Arayüz böyle görünecek

Langchain ile Youtube Videoları | arayüz | ChatGPT

Burada OpenAI anahtarını girdi olarak alan bir metin kutumuz var. Ayrıca API anahtarını değiştirmek ve anahtarı silmek için iki anahtar. Ayrıca solda bir sohbet kullanıcı arayüzü ve sağda yerel videoları işlemek için bir kutumuz var. Video kutusunun hemen altında, bir YouTube bağlantısı isteyen bir kutumuz ve "Transkripsiyonu Başlat" yazan düğmeler var.

Gradiyo Etkinlikleri

Şimdi uygulamayı etkileşimli hale getirmek için olayları tanımlayacağız. gr.Blocks()'un sonuna aşağıdaki kodları ekleyin.

start_video.click(fn=lambda :(pause, update_yt), outputs=[start2, yt_video]).then( fn=embed_video, inputs=
, outputs=
).success( fn=lambda:resume, outputs=[start2]) start_ytvideo.click(fn=lambda :(pause, update_video), outputs=[start1,video]).then( fn=embed_yt, inputs=[yt_link], outputs = [yt_video, chatbot]).success( fn=lambda:resume, outputs=[start1]) query.submit(fn=add_text, inputs=[chatbot, query], outputs=[chatbot]).success( fn=QuestionAnswer, inputs=[chatbot,query,yt_link,video], outputs=[chatbot,query]) api_key.submit(fn=set_apikey, inputs=api_key, outputs=api_key)
change_api_key.click(fn=enable_api_box, outputs=api_key) remove_key.click(fn = remove_key_box, outputs=api_key)
reset.click(fn = reset_vars, outputs=[chatbot,query, video, yt_video, ])
  • videoyu_başlat: Tıklandığında, videodan metin alma sürecini tetikler ve bir Konuşma zinciri oluşturur.
  • start_ytvideo: Tıklandığında aynı şeyi yapacak, ancak şimdi YouTube videosundan ve tamamlandığında YouTube videosunu hemen altında gösterecek.
  • sorgu: LLM'den sohbet kullanıcı arayüzüne akış yanıtı vermekten sorumludur.

Geri kalan olaylar, API anahtarını işlemek ve uygulamayı sıfırlamak içindir.

Olayları tanımladık ama olayları tetiklemekle sorumlu fonksiyonları tanımlamadık.

Backend

Karmaşık ve dağınık hale getirmemek için, arka uçta ilgileneceğimiz süreçleri ana hatlarıyla açıklayacağız.

  • API anahtarlarını kullanın.
  • Yüklenen videoyu işleyin.
  • Metinleri almak için videoları metne dönüştürün.
  • Video metinlerinden parçalar oluşturun.
  • Metinlerden yerleştirmeler oluşturun.
  • Vektör yerleştirmelerini ChromaDB vektör deposunda saklayın.
  • Langchain ile bir Sohbet Erişimi zinciri oluşturun.
  • İlgili belgeleri OpenAI sohbet modeline (gpt-3.5-turbo) gönderin.
  • Cevabı alın ve sohbet arayüzünde yayınlayın.

Tüm bunları, birkaç istisna işleme ile birlikte yapacağız.

Birkaç ortam değişkeni tanımlayın.

chat_history = []
result = None
chain = None
run_once_flag = False
call_to_load_video = 0 enable_box = gr.Textbox.update(value=None,placeholder= 'Upload your OpenAI API key', interactive=True)
disable_box = gr.Textbox.update(value = 'OpenAI API key is Set', interactive=False)
remove_box = gr.Textbox.update(value = 'Your API key successfully removed', interactive=False) pause = gr.Button.update(interactive=False)
resume = gr.Button.update(interactive=True)
update_video = gr.Video.update(value = None) update_yt = gr.HTML.update(value=None) 

API Anahtarlarını İşleyin

Bir kullanıcı bir anahtar gönderdiğinde, ortam değişkeni olarak ayarlanır ve metin kutusunu daha fazla girişten de devre dışı bırakırız. Değiştir tuşuna basmak onu tekrar değişken hale getirecektir. Kaldır tuşuna tıklamak, anahtarı kaldıracaktır.

enable_box = gr.Textbox.update(value=None,placeholder= 'Upload your OpenAI API key', interactive=True)
disable_box = gr.Textbox.update(value = 'OpenAI API key is Set',interactive=False)
remove_box = gr.Textbox.update(value = 'Your API key successfully removed', interactive=False) def set_apikey(api_key): os.environ['OPENAI_API_KEY'] = api_key return disable_box
def enable_api_box(): return enable_box
def remove_key_box(): os.environ['OPENAI_API_KEY'] = '' return remove_box

Kolu Videoları

Sırada, yüklenen videolar ve YouTube bağlantılarıyla ilgileneceğiz. Her durumla ilgilenen iki farklı fonksiyonumuz olacak. YouTube bağlantıları için bir iframe embed bağlantısı oluşturacağız. Her durum için başka bir işlev çağıracağız make_chain() zincir oluşturmaktan sorumludur.

Bu işlevler, birisi bir video yüklediğinde veya bir YouTube bağlantısı sağladığında ve yazıya dök düğmesine bastığında tetiklenir.

def embed_yt(yt_link: str): # This function embeds a YouTube video into the page. # Check if the YouTube link is valid. if not yt_link: raise gr.Error('Paste a YouTube link') # Set the global variable `run_once_flag` to False. # This is used to prevent the function from being called more than once. run_once_flag = False # Set the global variable `call_to_load_video` to 0. # This is used to keep track of how many times the function has been called. call_to_load_video = 0 # Create a chain using the YouTube link. make_chain(url=yt_link) # Get the URL of the YouTube video. url = yt_link.replace('watch?v=', '/embed/') # Create the HTML code for the embedded YouTube video. embed_html = f"""<iframe width="750" height="315" src="{url}" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>""" # Return the HTML code and an empty list. return embed_html, [] def embed_video(video=str | None): # This function embeds a video into the page. # Check if the video is valid. if not video: raise gr.Error('Upload a Video') # Set the global variable `run_once_flag` to False. # This is used to prevent the function from being called more than once. run_once_flag = False # Create a chain using the video. make_chain(video=video) # Return the video and an empty list. return video, []

Zincir Oluştur

Bu, en önemli adımlardan biridir. Bu, bir Chroma vektör deposu ve Langchain zinciri oluşturmayı içerir. Kullanım durumumuz için bir Konuşma alma zinciri kullanacağız. OpenAI yerleştirmelerini kullanacağız, ancak gerçek dağıtımlar için Huggingface cümle kodlayıcıları vb. gibi herhangi bir ücretsiz yerleştirme modelini kullanın.

def make_chain(url=None, video=None) -> (ConversationalRetrievalChain | Any | None): global chain, run_once_flag # Check if a YouTube link or video is provided if not url and not video: raise gr.Error('Please provide a YouTube link or Upload a video') if not run_once_flag: run_once_flag = True # Get the title from the YouTube link or video title = get_title(url, video).replace(' ','-') # Process the text from the video grouped_texts, time_list = process_text(url=url) if url else process_text(video=video) # Convert time_list to metadata format time_list = [{'source': str(t.time())} for t in time_list] # Create vector stores from the processed texts with metadata vector_stores = Chroma.from_texts(texts=grouped_texts, collection_name='test', embedding=OpenAIEmbeddings(), metadatas=time_list) # Create a ConversationalRetrievalChain from the vector stores chain = ConversationalRetrievalChain.from_llm(ChatOpenAI(temperature=0.0), retriever= vector_stores.as_retriever( search_kwargs={"k": 5}), return_source_documents=True) return chain
  • Metinleri ve meta verileri YouTube URL'sinden veya video dosyasından alın.
  • Metinlerden ve meta verilerden bir Chroma vektör deposu oluşturun.
  • OpenAI gpt-3.5-turbo ve kroma vektör deposunu kullanarak bir zincir oluşturun.
  • Dönüş zinciri.

Metinleri İşle

Bu adımda, videolardan metinleri uygun şekilde dilimleyeceğiz ve ayrıca yukarıdaki zincir oluşturma sürecinde kullandığımız meta veri nesnesini oluşturacağız.

def process_text(video=None, url=None) -> tuple[list, list[dt.datetime]]: global call_to_load_video if call_to_load_video == 0: print('yes') # Call the process_video function based on the given video or URL result = process_video(url=url) if url else process_video(video=video) call_to_load_video += 1 texts, start_time_list = [], [] # Extract text and start time from each segment in the result for res in result['segments']: start = res['start'] text = res['text'] start_time = dt.datetime.fromtimestamp(start) start_time_formatted = start_time.strftime("%H:%M:%S") texts.append(''.join(text)) start_time_list.append(start_time_formatted) texts_with_timestamps = dict(zip(texts, start_time_list)) # Convert the timestamp strings to datetime objects formatted_texts = { text: dt.datetime.strptime(str(timestamp), '%H:%M:%S') for text, timestamp in texts_with_timestamps.items() } grouped_texts = [] current_group = '' time_list = [list(formatted_texts.values())[0]] previous_time = None time_difference = dt.timedelta(seconds=30) # Group texts based on time difference for text, timestamp in formatted_texts.items(): if previous_time is None or timestamp - previous_time <= time_difference: current_group += text else: grouped_texts.append(current_group) time_list.append(timestamp) current_group = text previous_time = time_list[-1] # Append the last group of texts if current_group: grouped_texts.append(current_group) return grouped_texts, time_list
  • process_text işlevi, bir URL veya Video yolu alır. Bu video daha sonra process_video işlevinde deşifre edilir ve son metinleri alırız.
  • Daha sonra her cümlenin başlangıç ​​zamanını (Whisper'dan) alır ve bunları 30 saniyede gruplandırırız.
  • Sonunda gruplandırılmış metinleri ve her grubun başlangıç ​​saatini döndürürüz.

İşlem Videosu

Bu adımda, video veya ses dosyalarını yazıya döküyoruz ve metinleri alıyoruz. Transkripsiyon için Whisper temel modelini kullanacağız.

def process_video(video=None, url=None) -> dict[str, str | list]: if url: file_dir = load_video(url) else: file_dir = video print('Transcribing Video with whisper base model') model = whisper.load_model("base") result = model.transcribe(file_dir) return result

YouTube videolarını doğrudan işleyemediğimiz için ayrı ayrı ele almamız gerekecek. YouTube videosunun sesini veya videosunu indirmek için Pytube adlı bir kütüphane kullanacağız. İşte bunu nasıl yapabileceğiniz.

def load_video(url: str) -> str: # This function downloads a YouTube video and returns the path to the downloaded file. # Create a YouTube object for the given URL. yt = YouTube(url) # Get the target directory. target_dir = os.path.join('/tmp', 'Youtube') # If the target directory does not exist, create it. if not os.path.exists(target_dir): os.mkdir(target_dir) # Get the audio stream of the video. stream = yt.streams.get_audio_only() # Download the audio stream to the target directory. print('----DOWNLOADING AUDIO FILE----') stream.download(output_path=target_dir) # Get the path of the downloaded file. path = target_dir + '/' + yt.title + '.mp4' # Return the path of the downloaded file. return path
  • Verilen URL için bir YouTube nesnesi oluşturun.
  • Geçici bir hedef dizin yolu oluşturun
  • Yolun var olup olmadığını kontrol edin, aksi takdirde dizini oluşturun
  • Dosyanın sesini indirin.
  • Videonun yol dizinini alın

Bu, videolardan metin almaktan zinciri oluşturmaya kadar aşağıdan yukarıya bir süreçti. Şimdi geriye kalan tek şey chatbot'u yapılandırmak.

Chatbot'u Yapılandır

Şimdi tek ihtiyacımız olan, cevaplarımızı almak için ona bir sorgu ve bir chat_history göndermek. Bu nedenle, yalnızca bir sorgu gönderildiğinde tetiklenen bir işlev tanımlayacağız.

def add_text(history, text): if not text: raise gr.Error('enter text') history = history + [(text,'')] return history def QuestionAnswer(history, query=None, url=None, video=None) -> Generator[Any | None, Any, None]: # This function answers a question using a chain of models. # Check if a YouTube link or a local video file is provided. if video and url: # Raise an error if both a YouTube link and a local video file are provided. raise gr.Error('Upload a video or a YouTube link, not both') elif not url and not video: # Raise an error if no input is provided. raise gr.Error('Provide a YouTube link or Upload a video') # Get the result of processing the video. result = chain({"question": query, 'chat_history': chat_history}, return_only_outputs=True) # Add the question and answer to the chat history. chat_history += [(query, result["answer"])] # For each character in the answer, append it to the last element of the history. for char in result['answer']: history[-1][-1] += char yield history, ''

Görüşmenin bağlamını korumak için sorguyla birlikte sohbet geçmişini sağlıyoruz. Son olarak, cevabı sohbet botuna geri aktarıyoruz. Ve tüm değerleri sıfırlamak için sıfırlama işlevini tanımlamayı unutmayın.

Yani, hepsi bununla ilgiliydi. Şimdi uygulamanızı başlatın ve videolarla sohbet etmeye başlayın.

Nihai ürün böyle görünüyor

chatbot'u yapılandırın | ChatGPT

Video Demo:

[Gömülü içerik]

Gerçek Hayattaki Kullanım Örnekleri

Son kullanıcının herhangi bir video veya sesle sohbet etmesine izin veren bir uygulamanın çok çeşitli kullanım durumları olabilir. İşte bu chatbot'un gerçek hayattaki kullanım durumlarından bazıları.

  • Eğitim: Öğrenciler genellikle saatlerce süren video derslerinden geçerler. Bu chatbot, öğrencilerin ders videolarından öğrenmelerine ve yararlı bilgileri hızlı bir şekilde çıkarmalarına yardımcı olarak zamandan ve enerjiden tasarruf edebilir. Bu, öğrenme deneyimini önemli ölçüde geliştirecektir.
  • Yasal: Hukuk uzmanları genellikle davayı analiz etmek, belge hazırlamak, araştırma yapmak veya uygunluğu izlemek için uzun yasal işlemlerden ve ifade verme süreçlerinden geçerler. Bunun gibi bir sohbet robotu, bu tür görevleri ortadan kaldırmada uzun bir yol kat edebilir.
  • İçerik Özeti: Bu uygulama, video içeriğini analiz edebilir ve özetlenmiş metin sürümleri oluşturabilir. Bu, kullanıcının videonun önemli noktalarını tamamen izlemeden kavramasını sağlar.
  • Müşteri etkileşimi: Markalar, ürünleri veya hizmetleri için bir görüntülü sohbet robotu özelliği kullanabilir. Bu, yüksek maliyetli veya çok fazla açıklama gerektiren ürün veya hizmetler satan işletmeler için yararlı olabilir.
  • Video Çeviri: Metin külliyatını diğer dillere çevirebiliriz. Bu, diller arası iletişimi, dil öğrenimini veya anadili olmayanlar için erişilebilirliği kolaylaştırabilir.

Bunlar aklıma gelen potansiyel kullanım durumlarından bazıları. Videolar için bir sohbet robotunun çok daha kullanışlı uygulamaları olabilir.

Sonuç

Yani, bu tamamen videolar için bir sohbet botu için işlevsel bir demo web uygulaması oluşturmakla ilgiliydi. Makale boyunca birçok kavramı ele aldık. İşte makaleden önemli çıkarımlar.

  • Yapay zeka uygulamalarını kolaylıkla oluşturmak için popüler bir araç olan Langchain'i öğrendik.
  • Whisper, OpenAI'nin güçlü bir konuşmadan metne dönüştürme modelidir. Ses ve videoları metne dönüştürebilen açık kaynaklı bir model.
  • Vektör veritabanlarının, vektör yerleştirmelerinin etkili bir şekilde saklanmasını ve sorgulanmasını nasıl kolaylaştırdığını öğrendik.
  • Langchain, Chroma ve OpenAI modellerini kullanarak sıfırdan tamamen işlevsel bir web uygulaması oluşturduk.
  • Ayrıca, sohbet robotumuzun potansiyel gerçek hayattaki kullanım durumlarını da tartıştık.

Hepsi bununla ilgiliydi umarım beğenirsiniz ve beni takip etmeyi düşünün Twitter geliştirme ile ilgili daha fazla şey için.

GitHub Deposu: sunilkumardash9/videolar için chatgpt. Bunu yararlı bulursanız, depoyu ⭐ yapın.

Sık Sorulan Sorular

S1. Langchain ne için kullanılır?

A. LangChain, büyük dil modelleri kullanarak uygulamaların oluşturulmasını basitleştiren açık kaynaklı bir çerçevedir. Chatbot'lar, belge analizi, kod analizi, soru yanıtlama ve üretken görevler dahil olmak üzere çeşitli görevler için kullanılabilir.

S2. Langchain'deki zincirler ve aracılar arasındaki fark nedir?

A. Zincirler, sırayla yürütülen bir dizi adımdır. Belirli bir görevi veya süreci tanımlamak için kullanılırlar. Örneğin, bir belgeyi özetlemek, bir soruyu yanıtlamak veya yaratıcı metin oluşturmak için bir zincir kullanılabilir.
Aracılar zincirlerden daha karmaşıktır. Hangi adımları uygulayacaklarına karar verebilirler ve ayrıca deneyimlerinden öğrenebilirler. Aracılar genellikle çok fazla yaratıcılık veya muhakeme gerektiren görevler için kullanılır, örneğin veri analizi ve kod oluşturma.

S3. Langchain'deki farklı aracı türleri nelerdir?

A. 1. Eylem: Eylem aracıları, her seferinde bir adım olarak bu eylemi gerçekleştirmek için bir eyleme karar verir. Daha gelenekseldirler ve küçük işler için uygundurlar.
2. Planla ve uygula Aracılar önce gerçekleştirilecek bir eylem planına karar verir ve ardından bu eylemleri birer birer yürütür. Daha karmaşıktırlar ve daha fazla planlama ve esneklik gerektiren görevler için uygundurlar.

S4. Hangi modeller LangChain ile uyumludur?

A. Langchain, LLM'leri ve sohbet modellerini entegre etme yeteneğine sahiptir. LLM'ler, dizi girdisi alan ve bir dizi yanıtı döndüren modellerdir. Sohbet modelleri, sohbet mesajlarının bir listesini girdi olarak alır ve bir sohbet mesajı verir.

S5. Langchain ücretsiz mi?

C. Evet, Lagchain kullanımı ücretsiz, açık kaynaklı bir araçtır, ancak çoğu işlem, ücrete tabi olan bir OpenAI API anahtarı gerektirir.

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır.

spot_img

En Son İstihbarat

spot_img