Zephyrnet Logosu

Langchain'de Zincir Kullanmaya İlişkin Kapsamlı Bir Kılavuz

Tarih:

Giriş

Dil işlemede ön saflara adım atın! Dilin insanlık ve teknoloji arasında önemli bir bağlantı olduğu bir alanda, Doğal Dil İşleme alanında kaydedilen ilerlemeler bazı olağanüstü yüksekliklerin kilidini açmıştır. Bu ilerlemenin içinde, metin tabanlı bilgilerle olan etkileşimlerimizi yeniden şekillendiren dönüştürücü bir güç olan çığır açan Büyük Dil Modeli yatıyor. Bu kapsamlı öğrenme yolculuğunda, metin tabanlı bilgilerle etkileşim şeklimizi yeniden şekillendiren son teknoloji bir araç olan LangChain'in inceliklerini keşfedeceksiniz. Zincirin ne olduğunu hiç merak ettiniz mi “Langchain”?

LangChain, bu modellerin ham girdileri rafine ve insan benzeri tepkilere nasıl dönüştürdüğüne dair derin bir anlayış sunan Büyük Dil Modellerinin en dinamik alanına açılan bir kapı olarak tek başına duruyor. Bu keşif sayesinde, LLMChain'ler ve Sıralı Zincirlerden Yönlendirici Zincirlerin karmaşık işleyişine kadar LangChain'in temel yapı taşlarını çözeceksiniz.

Öğrenme hedefleri

  • Girdilerin sistem içerisinde nasıl aktığını görmek için LLMChain'ler ve Sıralı Zincirler de dahil olmak üzere LangChain'in temel bileşenlerini anlayın.
  • Bilgi istemi şablonları ile dil modelleri arasındaki bağlantıyı keşfederek farklı öğeleri tutarlı bir şekilde entegre etmeyi öğrenin.
  • Gerçek dünyadaki görevler için işlevsel zincirler oluşturma konusunda pratik deneyim kazanın.
  • Yapılara, şablonlara ve ayrıştırma tekniklerine ince ayar yaparak zincir verimliliğini artıracak beceriler geliştirin.

Bu makale, Veri Bilimi Blogatonu.

İçindekiler

LLM nedir?

A Büyük Dil Modeli (LLM), insan benzeri metinleri anlamak ve oluşturmak için tasarlanmış bir tür yapay zekayı ifade eder. OpenAI'nin GPT-3.5'i gibi bu modeller, insan dilinin kalıplarını ve yapılarını anlamak için kapsamlı metin verileri üzerinde eğitim alıyor. Çeviri, içerik oluşturma, soruları yanıtlama ve daha fazlası dahil olmak üzere dille ilgili çeşitli görevleri gerçekleştirebilirler.

Yüksek Lisans'lar doğal dil işlemede değerli araçlardır ve sohbet robotları, içerik üretimi ve dil çeviri hizmetleri gibi alanlarda uygulamalara sahiptir.

LangChain nedir?

LangChain Zincirlerinin inceliklerini açığa çıkarmadan önce, LangChain'in özünü kavrayalım. LangChain, OpenAI, Cohere, Bloom, Huggingface ve diğerleri dahil olmak üzere çeşitli büyük dil modeli (LLM) sağlayıcılarıyla etkileşimi basitleştirmek için tasarlanmış güçlü bir kütüphanedir. LangChain'i diğerlerinden ayıran şey, benzersiz özelliğidir: Zincirler oluşturma yeteneği ve bir veya daha fazla LLM arasında köprü kurmaya yardımcı olan mantıksal bağlantılar.

"

Neden LangChain'i Kullanmalı?

Dil Zinciri yalnızca hayal gücünüzle sınırlı, sınırsız fırsatlar sunar.

  • Yalnızca bilgi sağlamakla kalmayıp aynı zamanda kullanıcıların ilgisini çeken, zeka ve çekiciliğe sahip sohbet robotları hayal edin.
  • Müşterileri satın almaya zorlayacak kadar doğru ürünler öneren e-ticaret platformlarını hayal edin.
  • Kişiselleştirilmiş tıbbi bilgiler sunan, bireylerin kendi sağlıkları hakkında bilinçli kararlar vermelerini sağlayan sağlık hizmetleri uygulamalarını hayal edin.

LangChain ile olağanüstü deneyimler yaratma gücüne sahipsiniz. Bu fikirleri gerçeğe dönüştürme potansiyeli parmaklarınızın ucunda.

LangChain'deki Zincirleri Anlamak

LangChain'in merkezinde, bir veya daha fazla büyük dil modeli (LLM) arasındaki temel bağlantıyı oluşturan, LangChain Zincirleri olarak bilinen hayati bir bileşen bulunur.

"

Bazı karmaşık uygulamalarda, LLM'lerin birbirleriyle veya diğer unsurlarla birlikte zincirlenmesi gerekli hale gelir. Bu Zincirler bize çok sayıda bileşeni entegre etme ve bunları tutarlı bir uygulama halinde birleştirme gücü veriyor. Farklı Zincir türlerini daha derinlemesine inceleyelim.

Ayrıca, Chains in LLM tarafından sunulan yapılandırılmış yaklaşım, kusursuz ve etkili işlemeyi garanti ederek, çok çeşitli kullanıcı gereksinimlerine göre uyarlanmış gelişmiş uygulamaların geliştirilmesinin önünü açıyor. Bu karmaşık bağlantılar LangChain'in temel çerçevesi olarak hizmet ettiğinden ve birden fazla Büyük Dil Modeli (LLM) arasında kesintisiz etkileşimi kolaylaştırdığından, bu, doğal dil işleme alanında önemli bir ilerlemeyi temsil eder.

Ama önce Neden Zincirler?

Zincirler, farklı bileşenleri zahmetsizce harmanlama, tekil ve tutarlı bir uygulamayı şekillendirme kapasiteleri nedeniyle çok değerlidir. Zincirlerin oluşturulmasıyla birden fazla öğe kusursuz bir şekilde bir araya gelebilir. Şu senaryoyu hayal edin: Kullanıcı girdisini alacak, onu bir PromptTemplate kullanarak cilalayacak ve daha sonra bu rafine yanıtı büyük bir dil modeline (LLM) aktaracak bir zincir hazırlandı. Bu kolaylaştırılmış süreç, sistemin genel işlevselliğini yalnızca basitleştirmekle kalmaz, aynı zamanda zenginleştirir. Temelde zincirler, uygulamanın farklı bölümlerini sorunsuz bir şekilde birbirine bağlayan ve yeteneklerini geliştiren temel taş görevi görür. Bunu özetleyelim:

  • Bilgi istemi şablonlarını Yüksek Lisans'larla entegre etmek güçlü bir sinerjiye olanak tanır.
  • Bir LLM'nin çıktısını alıp bir sonrakinin girdisi olarak kullanarak, birden fazla LLM'yi sıralı bir şekilde bağlamak mümkün hale gelir.
  • Yüksek Lisans'ların dış verilerle harmanlanması, sistemin sorulara etkili bir şekilde yanıt vermesini sağlar.
  • Yüksek Lisans'ları sohbet geçmişi gibi uzun süreli bellekle entegre etmek, etkileşimlerin genel bağlamını ve derinliğini geliştirir.

Dahası, zincirler bize birden fazla zinciri birbirine bağlayarak veya zincirleri diğer hayati unsurlarla birleştirerek karmaşık uygulamalar oluşturma yeteneği sağlar. Bu yaklaşım, uygulama geliştirmek için karmaşık ve gelişmiş işlevlere izin veren karmaşık ve incelikli bir yöntem sağlar.

Zincir Çeşitleri

Langchain'de kullanabileceğimiz birçok farklı Zincir var. Burada üç temel zincirden geçiyoruz – LLM Zinciri, Sıralı Zincir ve Yönlendirici Zincir.

LLM Zinciri – En basit zincir

Bu sistemdeki en temel zincir biçimi, yaygın olarak tanınan ve temel olan LLMChain'dir. Operasyonu, bir PromptTemplate, bir OpenAI modeli (Büyük Dil Modeli veya bir ChatModel) ve isteğe bağlı bir çıktı ayrıştırıcıyı içeren yapılandırılmış bir düzenlemeyi içerir. Bu kurulumda LLMChain çeşitli giriş parametrelerini kabul eder. Bu girdileri tutarlı bir istem haline dönüştürmek için PromptTemplate'i kullanır. Bu gösterişli bilgi daha sonra modele girilir. Çıktıyı aldıktan sonra LLMChain, sonucu daha da hassaslaştırmak ve nihai kullanılabilir biçimine biçimlendirmek için (varsa) OutputParser'ı kullanır. LLM zincirlerinin işlevselliğini göstermek için somut örneği düşünün. LLM zincirlerinin işlevselliğini gösteren somut bir örnek aşağıda ayrıntılı olarak verilmiştir:

LLM Zinciri - en basit zincir
  • Bir kullanıcının girişini alıp bunu zincirdeki ilk öğeye (PromptTemplate) ileterek, girişi belirli bir bilgi istemine biçimlendirerek çalışır.
  • Biçimlendirilmiş bilgi istemi daha sonra zincirdeki bir sonraki (ve son) öğeye (LLM) aktarılır.

Zincir Üretimi – LLM Zinciri

Zincirler, özellikle de Yüksek Lisans Zincirleri oluşturmak, LangChain'de Büyük Dil Modellerinin kullanılmasını gerektiren titiz bir çabadır. Bu zincirler karmaşık kanallar olarak hizmet ederek sorunsuz bilgi alışverişini ve etkileşimi kolaylaştırır. Dikkatli bir yapılanma sayesinde geliştiriciler, kullanıcı girdilerini anlayabilen, akıllı yanıtlar oluşturmak için LLM'leri kullanabilen ve çıktıyı belirli ihtiyaçları etkili bir şekilde karşılayacak şekilde özelleştirebilen canlı uygulamalar tasarlayabilir.

Şimdi LLM Zincirlerini Langchain'de nasıl kullanabileceğimize daha derinlemesine bakalım.

Gerekli Kitaplıkları İçe Aktar

import langchain
import openai
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate from getpass import getpass
OPENAI_API_KEY = getpass()

Yüksek Lisans ve Bilgi İstemi Şablonunu Başlat

OpenAI Büyük Dil Modelini, oluşturulan yanıtların çeşitliliğini etkileyen 0.9 sıcaklık dahil olmak üzere belirli parametrelerle başlatıyoruz. Ayrıca, kullanıcıların bir değişken (bu durumda "ürün") girmek ve standartlaştırılmış bir bilgi istemi yapısı oluşturmak için bir 'PromptTemplate' tanımlaması gerekir. Çalışma zamanında '{product}' yer tutucusu farklı ürün adlarıyla dinamik olarak doldurulabilir.

llm = OpenAI(temperature=0.9, openai_api_key=OPENAI_API_KEY )
prompt = PromptTemplate( input_variables=["product"], template="What is a good name for a company that makes {product}?",
)

Zincir Oluşturmak

Önceden tanımlanmış bir OpenAI Büyük Dil Modeli ve belirtilen bir bilgi istemi şablonunu kullanarak 'LLMChain' sınıfının bir örneğini oluştururuz. Artık Chain.run komutunu kullanarak “oyun dizüstü bilgisayarı” gibi bir ürüne zinciri uygulayabilme yeteneğine sahibiz. Bu, zincirin bu spesifik ürün girdisine göre uyarlanmış yanıtları dinamik olarak işleyebileceği ve üretebileceği anlamına gelir.

from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt, verbose=True) print(chain.run("gaming laptop"))

Çıktı:

Zincir oluşturma | Langchain'deki Zincirler

Buna dayanarak “GamerTech Laptops” adlı bir şirketin adını alıyoruz.

Sıralı Zincir

Sıralı bir zincir, çeşitli bireysel zincirleri birleştiren bir zincirdir; burada bir zincirin çıktısı, sürekli bir dizide bir sonraki için girdi görevi görür. Bir dizi zincirin ardı ardına çalıştırılmasıyla çalışır.

İki tür ardışık zincir vardır:

Basit Sıralı ZincirTek bir giriş ve çıkışı işleyen ve

Sıralı Zincir, birden fazla girişi ve çıkışı aynı anda yönetin.

"
  • Sıralı bir zincir, bir zincirin çıktısını bir sonrakinin girdisi olarak kullanarak çeşitli zincirleri birleştirir.
  • Bir dizi zincirin ardı ardına yürütülmesiyle çalışır.
  • Bu yaklaşım, bir işlemin sonucunu bir sonraki işlemin başlangıç ​​noktası olarak kullanmanız gerektiğinde ve kesintisiz bir süreç akışı yaratmanız gerektiğinde değerlidir.

Basit Sıralı Zincir

Sıralı zincirler en basit haliyle her adımın bir girdi alıp bir çıktı ürettiği adımlardan oluşur. Bir adımın çıktısı bir sonraki adımın girdisi olur.

Basit sıralı zincirler

Bu basit yaklaşım, tekil girdiler ve çıktılar için tasarlanmış alt zincirlerle uğraşırken etkilidir. Her adımın çıktısını bir sonraki adıma sorunsuz bir şekilde geçirmesiyle düzgün ve sürekli bir bilgi akışı sağlar.

Zincir Oluşturma – Basit Sıralı Zincirler

Basit Sıralı Zincirler, tek bir girdinin bir dizi tutarlı dönüşümden geçmesine olanak tanır ve bu da daha iyi bir çıktıyla sonuçlanır. Bu sıralı yaklaşım, verilerin sistematik ve verimli bir şekilde işlenmesini sağlayarak onu doğrusal bir bilgi işleme akışının gerekli olduğu senaryolar için ideal kılar.

Gerekli Kitaplıkları İçe Aktarma

from langchain.llms import OpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.prompts import ChatPromptTemplate
from langchain.chains import SimpleSequentialChain

Başlatma ve Zincirleme

OpenAI Büyük Dil Modelini 0.7 sıcaklık ayarı ve API anahtarıyla başlatıyoruz. Daha sonra ürün adı için yer tutucu içeren özel bir sohbet istemi şablonu oluştururuz. Daha sonra, sağlanan istemlere göre yanıtların oluşturulmasına izin veren bir LLMChain oluştururuz. Bu işlemi iki farklı zincir için tekrarlıyoruz.

# This is an LLMChain to write first chain. llm = OpenAI(temperature=0.7, openai_api_key=OPENAI_API_KEY)
first_prompt = ChatPromptTemplate.from_template( "What is the best name to describe a company that makes {product}?"
)
chain_one = LLMChain(llm=llm, prompt=first_prompt) 
# This is an LLMChain to write second chain. llm = OpenAI(temperature=0.7, openai_api_key=OPENAI_API_KEY)
second_prompt = ChatPromptTemplate.from_template( "Write a 20 words description for the following company:{company_name}"
)
chain_two = LLMChain(llm=llm, prompt=second_prompt)

İki Zincirin Zincirlenmesi

İki farklı zincirden (zincir_bir ve zincir_iki) oluşan genel bir Basit Sıralı Zincir oluşturun. Bunu "oyun dizüstü bilgisayarı" girişiyle yürütün, girişi tanımlanmış zincirler aracılığıyla sırayla işler ve zincirlerin adım adım sıralı yürütülmesini gösteren bir çıktı sağlar.

overall_simple_chain = SimpleSequentialChain(chains=[chain_one, chain_two], verbose=True )
overall_simple_chain.run("gaming laptop")

Çıktı:

"

Sıralı Zincir

Sıralı zincirlerin tümü tek bir dizi girişi ve çıkışıyla çalışmaz. Daha karmaşık kurulumlarda bu zincirler birden fazla girişi yönetir ve birden fazla nihai çıktı üretir. Girdi ve çıktı değişkenlerinin dikkatli bir şekilde isimlendirilmesi bu karmaşık zincirlerde önemli bir öneme sahiptir.

Sıralı zincirler | Langchain'deki Zincirler

Sıralı zincirlerin daha genel bir biçimi birden fazla girdi/çıktıya izin verir. Zincirdeki herhangi bir adım birden fazla girdi alabilir.

Zincir Oluşturma – Sıralı Zincirler

Gerekli Kitaplıkları İçe Aktarma

from langchain.llms import OpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.prompts import ChatPromptTemplate
from langchain.chains import SequentialChain llm = OpenAI(temperature=0.7, openai_api_key=OPENAI_API_KEY)

Başlatma ve Zincirleme

Sisteme belirli bir görevi gerçekleştirmesi talimatını veren bir bilgi istemi şablonu tanımlarız. Daha sonra, belirlenen Büyük Dil Modeli'ni (LLM) ve tanımlanan bilgi istemi şablonunu kullanarak karşılık gelen bir LLMChain oluştururuz. Zincir, girdiyi alacak, LLM'den geçirecek ve çıktıyı üretecek şekilde ayarlanmıştır. Dört ayrı zincir oluşturacak şekilde bu işlemi tekrarlıyoruz.

Review = "Les ordinateurs portables GamersTech impressionne par ses performances exceptionnelles et son design élégant. De sa configuration matérielle robuste à un clavier RVB personnalisable et un système de refroidissement efficace, il établit un équilibre parfait entre prouesses de jeu et portabilité." # prompt template 1: translate to English first_prompt = ChatPromptTemplate.from_template( "Translate the following review to english:" "nn{Review}"
) # chain 1: input= Review and output= English_Review chain_one = LLMChain(llm=llm, prompt=first_prompt, output_key="English_Review" ) 
# prompt template 2: Summarize the English review second_prompt = ChatPromptTemplate.from_template( "Can you summarize the following review in 1 sentence:" "nn{English_Review}"
) # chain 2: input= English_Review and output= summary chain_two = LLMChain(llm=llm, prompt=second_prompt, output_key="summary" )
# prompt template 3: translate to English third_prompt = ChatPromptTemplate.from_template( "What language is the following review:nn{Review}"
) # chain 3: input= Review and output= language chain_three = LLMChain(llm=llm, prompt=third_prompt, output_key="language" )
# prompt template 4: follow up message fourth_prompt = ChatPromptTemplate.from_template( "Write a follow up response to the following " "summary in the specified language:" "nnSummary: {summary}nnLanguage: {language}"
) # chain 4: input= summary, language and output= followup_message chain_four = LLMChain(llm=llm, prompt=fourth_prompt, output_key="followup_message" )

İki Zincirin Zincirlenmesi

Dört ayrı zincir 'zincir_bir', 'zincir_iki', 'zincir_üç' ve 'zincir_dört'ü içeren 'genel_zincir' adlı genel bir Sıralı Zincir oluşturulur. Giriş değişkeni "İnceleme" bu zincirler aracılığıyla işlenerek üç farklı çıktı değişkeni oluşturulur: "English_Review", "summary" ve "followup_message." 'Genel_zincir', girdi incelemesini belirtilen zincirler aracılığıyla yürütür ve bu çıktıları üreterek ayrıntılı çıktılarla yapılandırılmış, sıralı bir işlem akışını kolaylaştırır.

overall_chain = SequentialChain( chains=[chain_one, chain_two, chain_three, chain_four], input_variables=["Review"], output_variables=["English_Review", "summary","followup_message"], verbose=True
)
overall_chain(Review)

Çıktı

"

Yönlendirici Zinciri

Yönlendirici Zinciri karmaşık görevler için kullanılır. Her biri belirli bir girdi türü için uzmanlaşmış birden fazla alt zincirimiz varsa, girdiyi hangi alt zincire ileteceğimize karar veren bir yönlendirici zincirimiz olabilir.

Bu oluşmaktadır:

  • Yönlendirici Zinciri: Çağrılacak bir sonraki zincirin seçilmesinden sorumludur.
  • Hedef Zincirleri: Yönlendirici zincirinin yönlendirilebileceği zincirler.
  • Varsayılan zincir: Yönlendirici hangi alt zincirin kullanılacağına karar veremediğinde kullanılır.
Yönlendirici zinciri | Langchain'deki Zincirler

Bu, bir girdinin tam olarak ne olduğuna bağlı olarak belirli bir zincire yönlendirilmesini içerir. Her biri farklı giriş türleri için uyarlanmış birkaç alt zincir olduğunda, bir yönlendirici zinciri devreye girer. Bu yönlendirici zinciri, girdinin hangi özel alt zincire gönderileceğini belirleyen bir karar verici görevi görür. Temel olarak, girdilerin uygun alt zincirlere kesintisiz olarak yönlendirilmesini sağlayarak, girdinin belirli özelliklerine göre verimli ve hassas işlemeyi sağlar.

Zincir Oluşturma – Yönlendirici Zincir

Gerekli Kitaplıkları İçe Aktarma

from langchain.chains.router import MultiPromptChain
from langchain.chains.router.llm_router import LLMRouterChain,RouterOutputParser
from langchain.prompts import PromptTemplate llm = OpenAI(temperature=0.7, openai_api_key=OPENAI_API_KEY)

Bilgi İstemi Şablonlarını Tanımlama

Girdileri Matematik, Fizik, Tarih veya Bilgisayar Bilimleri gibi konulara dayalı özel zincirlere yönlendirmemiz gereken bir senaryo düşünelim. Bunu başarmak için her konu için ayrı bilgi istemleri oluşturuyoruz: biri fizik soruları için, diğeri matematik sorguları için, üçüncüsü tarih soruları için ve dördüncüsü bilgisayar bilimleriyle ilgili konular için. Bu istemleri, her konu alanının benzersiz ihtiyaçlarını karşılamak için titizlikle tasarlıyoruz.

physics_template = """You are a very smart physics professor. You are great at answering questions about physics in a concise
and easy to understand manner. When you don't know the answer to a question you admit
that you don't know. Here is a question:
{input}""" math_template = """You are a very good mathematician. You are great at answering math questions. You are so good because you are able to break down hard problems into their component parts,
answer the component parts, and then put them together
to answer the broader question. Here is a question:
{input}""" history_template = """You are a very good historian. You have an excellent knowledge of and understanding of people,
events and contexts from a range of historical periods. You have the ability to think, reflect, debate, discuss and evaluate the past. You have a respect for historical evidence
and the ability to make use of it to support your explanations and judgements. Here is a question:
{input}"""

Ayrıca bu bilgi istemi şablonlarına adlar ve açıklamalar da dahil olmak üzere ayrıntılı bilgiler eklenebilir. Bu ek bağlam, her şablonun amacının kapsamlı bir şekilde anlaşılmasını sağlar. Bu bilgi daha sonra yönlendirici zincirine iletilir. Yönlendirici zincir daha sonra belirli konuya göre hangi alt zincire yönlendirileceğini belirler ve kesin ve etkili yanıtlar için uygun istem şablonunun kullanılmasını sağlar.

# Defining the prompt templates
prompt_infos = [ { "name": "physics", "description": "Good for answering questions about physics", "prompt_template": physics_template }, { "name": "math", "description": "Good for answering math questions", "prompt_template": math_template }, { "name": "History", "description": "Good for answering history questions", "prompt_template": history_template }
]

Hedef Zincirleri Oluşturma

Daha sonra odak noktamız destinasyon zincirleri oluşturmaya geçiyor. Bu zincirler, ayrı dil modeli zincirleri, özellikle de LLM zincirleri olarak işlev gören RouterChain tarafından etkinleştirilir. Ek olarak, yönlendiricinin belirsizlikle karşılaştığı ve kullanılacak uygun alt zinciri belirleyemediği durumları ele almak için varsayılan bir zincirin ana hatları çizilir. Bu varsayılan zincir, kararsızlık durumlarında bile yanıt verilmesini sağlayan bir geri dönüş seçeneği görevi görür.

destination_chains = {}
for p_info in prompt_infos: name = p_info["name"] prompt_template = p_info["prompt_template"] prompt = ChatPromptTemplate.from_template(template=prompt_template) chain = LLMChain(llm=llm, prompt=prompt) destination_chains[name] = chain destinations = [f"{p['name']}: {p['description']}" for p in prompt_infos]
destinations_str = "n".join(destinations)

Çok İstemli Yönlendirici Şablonu Oluşturma

Çeşitli zincirler arasındaki etkileşimleri yönlendirmede Yüksek Lisans'a rehberlik eden bir şablon oluşturuyoruz. Bu şablon yalnızca belirli görev talimatlarını özetlemekle kalmaz, aynı zamanda çıktının uyması gereken kesin formatı da belirleyerek standart ve tutarlı bir yanıt mekanizması sağlar.

MULTI_PROMPT_ROUTER_TEMPLATE = """Given a raw text input to a language model select the model prompt best suited for the input. You will be given the names of the available prompts and a description of what the prompt is best suited for. You may also revise the original input if you think that revising
it will ultimately lead to a better response from the language model. << FORMATTING >>
Return a markdown code snippet with a JSON object formatted to look like:
```json
{{{{ "destination": string name of the prompt to use or "DEFAULT" "next_inputs": string a potentially modified version of the original input
}}}}
``` REMEMBER: "destination" MUST be one of the candidate prompt names specified below OR it can be "DEFAULT" if the input is not
well suited for any of the candidate prompts.
REMEMBER: "next_inputs" can just be the original input if you don't think any modifications are needed. << CANDIDATE PROMPTS >>
{destinations} << INPUT >>
{{input}} << OUTPUT (remember to include the ```json)>>"""

Varsayılan Zincir Oluşturma

Her türlü giriş metnine uyum sağlamak için önceden ayarlanmış bir bilgi istemi şablonu oluşturulmuştur. Daha sonra 'default_chain' adı verilen ilişkili bir LLMChain, belirlenen Büyük Dil Modeli ve önceden tanımlanmış bilgi istemi kullanılarak oluşturulur. Bu kurulum, Büyük Dil Modelinin sağlanan herhangi bir giriş metnine dayalı olarak yanıtlar oluşturmasını sağlar.

default_prompt = ChatPromptTemplate.from_template("{input}")
default_chain = LLMChain(llm=llm, prompt=default_prompt)

Yönlendirici Şablonu Oluşturma

İleriye dönük olarak Fizik, Matematik, Tarih ve Bilgisayar Bilimleri gibi çeşitli kategorileri kapsayan esnek bir yönlendirici şablonu geliştirildi. Bu şablondan, yönlendirici için özel olarak tasarlanmış ayrı bir bilgi istemi şablonu oluşturulur. Bu özelleştirilmiş şablonu kullanarak Büyük Dil Modeli ve karşılık gelen yönlendirici istemini kullanan bir yönlendirici zinciri oluşturulur.

Karar verme yeteneklerini geliştirmek için bir yönlendirici çıktı ayrıştırıcısı tanıtıldı. Bu ayrıştırıcı, yönlendirici zincirinin alt zincirler arasında verimli bir şekilde gezinmesine yardımcı olur. Bu kapsamlı düzenleme, girdilerin tam olarak belirli alt zincirlere yönlendirilmesini sağlayarak çeşitli hedef kategorilerinde doğru ve hedefe yönelik yanıtlara yol açar.

router_template = MULTI_PROMPT_ROUTER_TEMPLATE.format( destinations=destinations_str
)
router_prompt = PromptTemplate( template=router_template, input_variables=["input"], output_parser=RouterOutputParser(),
) router_chain = LLMRouterChain.from_llm(llm, router_prompt)

Herşeyi Birbirine Zincirlemek

Girişleri belirli hedef zincirlere akıllıca yönlendirmek için bir yönlendirici zinciri içeren bir MultiPromptChain oluşturulur. Ek olarak, yönlendirici zincirinin belirsizlikle karşılaşabileceği durumları ele almak için varsayılan bir zincir dahil edilir ve ayrıntılı bilgiler için ayrıntılı günlük kaydının etkinleştirildiği yapılandırılmış ve etkili bir işlem akışı sağlanır.

chain = MultiPromptChain(router_chain=router_chain, destination_chains=destination_chains, default_chain=default_chain, verbose=True )

Çıktı

Çıkış | Langchain'deki Zincirler

Langchain'in Gerçek Dünya Kullanım Durumları

Büyük Dil Modelleri (LLM'ler) tarafından yönlendirilen çözümlerin gerçek dünyadaki kullanımlarını ve başarılarını araştırın ve bunların sektörler arasındaki çeşitli etkilerini gösterin. Müşteri desteği kapsamında, LangChain ve LLM'ler arasındaki işbirliği, akıllı sohbet robotlarının uygulanması yoluyla hizmetleri dönüştürdü. Bu botlar anında, kişiselleştirilmiş destek sağlayarak büyük miktardaki sorgu akışını verimli bir şekilde yönetir. Bekleme sürelerini azaltarak müşteri memnuniyeti düzeylerini önemli ölçüde artırırlar.

E-ticaret

LangChain, alışveriş yolculuğunu geliştirmek için Büyük Dil Modellerinin (LLM'ler) gücünden yararlanıyor. Geliştiriciler ürün özelliklerini, kullanıcı beğenilerini ve satın alma modellerini anlayan uygulamalar oluşturabilir. Bu platformlar, LLM'lerin yeteneklerinden yararlanarak özel ürün önerileri sunar, müşteri sorularına yanıt verir ve büyüleyici ürün açıklamaları oluşturur. Bu, satışların artmasına ve daha yüksek müşteri etkileşimi düzeylerine yol açar.

Sağlık hizmeti

LangChain, Büyük Dil Modelleri (LLM'ler) tarafından desteklenen uygulamalar aracılığıyla hasta bakımında ve teşhiste devrim yaratıyor. LangChain'in desteğiyle tıbbi soruları anlamak için sanal asistanlar geliştirin. Bu sanal asistanlar doğru bilgiler sağlıyor, hastaları semptomlara göre değerlendiriyor ve sağlık hizmetleri bilgisine erişimi hızlandırıyor. Bu ilerleme, yalnızca tıp profesyonellerinin iş yükünü hafifletmekle kalmıyor, aynı zamanda hastaların sağlıkları konusunda bilinçli kararlar vermelerine de olanak tanıyor.

İçerik Üretimi

LangChain, geliştiricilere, blog makaleleri ve ürün açıklamaları da dahil olmak üzere, yaratıcı ve bağlamsal olarak alakalı içerik üreten uygulamalar oluşturma olanağı sağlar. Bu uygulamalar, yaratıcılığı artırarak, yazma sürecini kolaylaştırarak ve ton ve stilde tutarlılığı koruyarak içerik yaratıcılarını destekler.

Burada vurgulanan pratik uygulamalar, çeşitli endüstrilerde Büyük Dil Modelleri (LLM'ler) tarafından yönlendirilen çözümlerin çok yönlülüğünü ve etkisini göstermektedir. LangChain'in potansiyeli, geliştiricilerin yenilikçi çözümler oluşturmasına, operasyonları kolaylaştırmasına, kullanıcı katılımını artırmasına ve iş büyümesini hızlandırmasına olanak tanır. Destek bildirimi çözüm sürelerindeki önemli azalmalardan, e-ticaret sohbet robotları için daha yüksek müşteri memnuniyeti oranlarına kadar uzanan ve LLM destekli uygulamaların somut faydalarını gösteren çok sayıda başarı öyküsü var.

Sonuç

LangChain, Büyük Dil Modeli yeteneklerinden oluşan uygulamalar geliştirmek için geniş bir fırsatlar alanı sunar. Odak noktanız ister metin tamamlama, dil çevirisi, duygu analizi, metin özetleme veya adlandırılmış varlık tanıma gibi görevlerde olsun, LangChain çok yönlü bir çözüm olarak duruyor.

LangChain, akıllı zincirleme teknikleri yoluyla güçlü uygulamalar oluşturmak için kapsamlı bir çerçeve sunar. Geliştiriciler, farklı zincirlerin ve konfigürasyonlarının inceliklerini anlayarak karmaşık görevler için özel çözümler oluşturabilir. Girdilerin Yönlendirici Zincirler yoluyla yönlendirilmesi, akıllı karar verme katmanı ekleyerek girdileri en uygun işleme yollarına yönlendirmemizi sağlar. Geliştiriciler bu bilgiyle sektörler genelinde yenilikçi uygulamalar tasarlayabilir, süreçleri kolaylaştırabilir, kullanıcı deneyimlerini geliştirebilir ve sonuçta dijital alanda dille etkileşim şeklimizde devrim yaratabilir.

Önemli Noktalar

  • LangChain'deki en basit zincir biçimi olan LLMChain, bir PromptTemplate kullanarak kullanıcı girişlerini dönüştürerek Büyük Dil Modelleri (LLM'ler) ile etkileşim için temel ve yaygın olarak kullanılan bir çerçeve sağlar.
  • LangChain'deki sıralı zincirler, ister Basit Sıralı Zincirler isterse daha karmaşık kurulumlar olsun, bir adımdaki çıktının bir sonraki adım için girdi olarak hizmet etmesini sağlar, süreci basitleştirir ve çeşitli uygulamalarda karmaşık etkileşimlere izin verir.
  • LangChain'deki Yönlendirici Zinciri, belirli girdileri özel alt zincirlere yönlendiren akıllı bir karar verici olarak hizmet eder. Bu kesintisiz yönlendirme, girdileri en uygun işlem zincirleriyle eşleştirerek görevlerin verimliliğini artırır.

Sık Sorulan Sorular

S1: LangChain nedir ve dil işlemede nasıl devrim yaratır?

Cevap1: LangChain, dil işleme görevlerini kolaylaştırmak için Büyük Dil Modellerinden (LLM'ler) yararlanan gelişmiş bir teknolojidir. LLMChain'ler ve Yönlendirici Zincirler gibi çeşitli bileşenleri entegre ederek kusursuz görev yönlendirmeye ve verimli işlemeye olanak tanıyarak akıllı uygulamaların geliştirilmesine yol açar.

S2: LLMChain nasıl çalışır ve LangChain'de nasıl bir rol oynar?

Cevap2: LLMChain, LangChain'in temel bir unsurudur. Kullanıcı girişlerini biçimlendirmek için bir PromptTemplate kullanarak çalışır ve bunları işlenmek üzere bir LLM'ye iletir. İsteğe bağlı OutputParser, çıktıyı hassaslaştırarak istenen formatla hizalanmasını sağlar ve LLMChain'i tutarlı dil üretimi için önemli bir araç haline getirir.

S3: Sıralı Zincirler nedir ve birden fazla girdi ve çıktının işlenmesini nasıl geliştirirler?

Cevap3: Sıralı Zincirler çeşitli alt zincirleri birleştirerek birinin çıktısının bir sonrakinin girdisi olmasını sağlar. Basit Sıralı Zincirler tekli giriş ve çıkışları yönetirken, daha karmaşık Sıralı Zincirler birden fazla giriş ve çıkışı aynı anda yöneterek LangChain uygulamalarındaki bilgi akışını kolaylaştırır.

S4: LangChain'deki Yönlendirici Zincirlerin amacı nedir ve karmaşık görevleri nasıl optimize ederler?

Cevap4: Yönlendirici Zincirler, birden fazla özel alt zincir içeren karmaşık görevler için çok önemlidir. Belirli özelliklere göre girdilerin hangi alt zincire yönlendirileceğini belirlerler. Yönlendirici Zincir, Hedef Zincirler ve Varsayılan Zincir ile birlikte girdileri en uygun alt zincire verimli bir şekilde yönlendirerek hassas işleme sağlar.

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