Takip et

Güvenilir Bir Yapay Zeka Ajanı Oluşturma: Java, Quarkus, LangChain4j ile Üretimde (2. Bölüm: Bellek)

Güvenilir Bir Yapay Zeka Ajanı Oluşturma: Java, Quarkus, LangChain4j ile Üretimde (2. Bölüm: Bellek)

Merhaba! Güvenilir bir yapay zeka ajanı oluşturma serimizin ikinci bölümüne hoş geldiniz. İlk bölümde, Java, Quarkus ve LangChain4j’yi kullanarak bir yapay zeka ajanı nasıl oluşturulacağını gösterdik. Bu bölümde, yapay zeka ajanınızın daha akıllı ve kullanışlı olmasına olanak tanıyan önemli bir bileşen olan belleği ele alacağız.

Yapay Zeka Ajanlarında Bellek: Neden Önemlidir?

Bir yapay zeka ajanı, etkileşimli bir sistemdir. Yani, bir kullanıcıyla veya başka bir sistemle etkileşime girer ve tepkiler verir. Bu etkileşimler sırasında, ajan önemli bilgiler toplar. Örneğin, bir müşteri hizmetleri ajanı, bir kullanıcının önceki sorularını ve yanıtlarını hatırlamalı, böylece daha iyi bir hizmet sunabilir. Bir web tarayıcısı, bir kullanıcının gezinme geçmişini ve tercih ettiği web sitelerini hatırlamalı, böylece daha kişiselleştirilmiş bir deneyim sunabilir.

Bir yapay zeka ajanı, daha önceki etkileşimlerden elde edilen bilgileri hatırlayabildiği zaman, daha akıllı, daha kullanışlı ve daha etkili hale gelir. Bu, ajanların daha iyi tahminlerde bulunmasını, daha alakalı yanıtlar vermesini ve daha kişiselleştirilmiş deneyimler sunmasını sağlar.

LangChain4j ile Bellek Uygulaması

LangChain4j, yapay zeka ajanlarının belleğini uygulamak için çeşitli araçlar sunar. En yaygın kullanılan yöntemlerden biri, *Memory* arabirimini kullanmaktır.

**Memory** arabirimi, bir yapay zeka ajanı tarafından toplanan bilgileri depolamak ve geri almak için bir mekanizma sağlar. LangChain4j, farklı türde bellekleri destekler. Bunlardan bazıları şunlardır:

* **Chat History Memory:** Bir sohbet geçmişini saklamak için kullanılır.
* **Vector Store Memory:** Bilgiyi vektörler halinde depolamak için kullanılır. Bu, benzer içeriği bulmak için kullanışlıdır.
* **Conversation Buffer Memory:** Son birkaç sohbet dönüşünü saklamak için kullanılır.

Bir Örnek: Chat History Memory

İşte LangChain4j’yi kullanarak bir sohbet geçmişi belleği nasıl uygulanacağını gösteren bir örnek:

“`java
import io.quarkus.runtime.StartupEvent;
import io.quarkus.runtime.annotations.Startup;
import java.util.concurrent.atomic.AtomicInteger;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.langchain.chains.ConversationalRetrievalQAChain;
import org.langchain.chains.RetrievalQAChain;
import org.langchain.chains.llm.LLMChain;
import org.langchain.chains.llm.LLMChain.LLMChainBuilder;
import org.langchain.embeddings.HuggingFaceEmbeddings;
import org.langchain.embeddings.OpenAIEmbeddings;
import org.langchain.memory.ChatHistoryMemory;
import org.langchain.memory.ConversationBufferMemory;
import org.langchain.memory.Memory;
import org.langchain.memory.VectorStoreMemory;
import org.langchain.model.ChatOpenAI;
import org.langchain.model.TextEmbeddings;
import org.langchain.retrievers.base.CacheRetriever;
import org.langchain.retrievers.base.Retriever;
import org.langchain.retrievers.vectorstore.VectorStoreRetriever;
import org.langchain.schema.LanguageModel;
import org.langchain.text_splitter.RecursiveCharacterTextSplitter;
import org.langchain.vectorstores.Chroma;
import org.langchain.vectorstores.InMemoryVectorStore;
import org.langchain.vectorstores.VectorStore;

@Startup
@Singleton
public class Agent {
@Inject
LLMChain llmChain;

public void start(StartupEvent event) {
ChatOpenAI chatOpenAI = ChatOpenAI.builder().modelName(“gpt-3.5-turbo”).build();
// TextEmbeddings embeddings = new OpenAIEmbeddings();
TextEmbeddings embeddings = new HuggingFaceEmbeddings(“sentence-transformers/all-mpnet-base-v2”);

// Create a memory to store the chat history.
Memory memory = new ChatHistoryMemory();
// Memory memory = new ConversationBufferMemory();

// Create a retriever that retrieves relevant information from the memory.
Retriever retriever = new CacheRetriever(
new VectorStoreRetriever(
new VectorStoreMemory(memory, embeddings))
);

// Create a chain that uses the memory and retriever to answer questions.
RetrievalQAChain chain = ConversationalRetrievalQAChain
.builder()
.retriever(retriever)
.llmChain(llmChain)
.build();
System.out.println(“Yapay Zeka Ajanı başlatıldı.”);
}
}
“`

Bu kod parçası, bir sohbet geçmişi belleği (`ChatHistoryMemory`) ve bir vektör deposu geri alıcı (`VectorStoreRetriever`) oluşturur. Geri alıcı, bellekteki ilgili bilgileri alır. Son olarak, bellek ve geri alıcıyı kullanan ve soruları yanıtlayan bir zincir (`ConversationalRetrievalQAChain`) oluşturulur.

Belleğin Avantajları

Yapay zeka ajanlarında bellek kullanmanın birçok avantajı vardır:

* **Daha iyi tahminler:** Bellek, ajanların geçmiş etkileşimlerden öğrenmesini ve gelecekte daha iyi tahminlerde bulunmasını sağlar.
* **Daha alakalı yanıtlar:** Bellek, ajanların kullanıcı bağlamını anlamasını ve daha alakalı yanıtlar vermesini sağlar.
* **Daha kişiselleştirilmiş deneyimler:** Bellek, ajanların kullanıcı tercihlerini ve geçmiş etkileşimlerini hatırlamasını ve daha kişiselleştirilmiş deneyimler sunmasını sağlar.

Sonuç

Bellek, güvenilir bir yapay zeka ajanı oluşturmanın önemli bir parçasıdır. LangChain4j, çeşitli bellek türlerini uygulamak için araçlar sunar. Doğru bellek türünü seçmek, ajanın özel ihtiyaçlarına ve kullanım durumuna bağlıdır.

Bir sonraki bölümde, yapay zeka ajanlarında bellek kullanımıyla ilgili birkaç gerçek dünya örneğini inceleyeceğiz. Bu örnekler, farklı bellek türlerinin nasıl kullanılabileceğini ve yapay zeka ajanlarını daha akıllı ve kullanışlı hale getirdiğini gösterecektir.

İpuçları

Bir yapay zeka ajanı için bellek seçerken aşağıdaki ipuçlarını göz önünde bulundurun:

* **Kullanım durumunuzu göz önünde bulundurun:** Hangi tür bilgiler saklanmalı? Ne kadar uzun süre saklanmalı?
* **Verimlilik:** Belleğin performansı nasıl? Bilgiye hızlı ve verimli bir şekilde erişilebilir mi?
* **Güvenlik:** Bellek, hassas bilgileri güvenli bir şekilde saklıyor mu?

Kaynaklar

* Fatih Soysal Blog
* LangChain Belgeleri
* Hugging Face Embeddings

#Etiketler
#YapayZeka #Ajan #Bellek #LangChain4j #Java #Quarkus #Üretim #ChatHistoryMemory #VectorStoreMemory #ConversationBufferMemory

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık