developer-docs-ai-agent
Normalde yapay zeka ajanları, bir şeyler yapabilen ve biraz zeki bazı botlar olarak düşünülür. Ancak pratikte, en faydalı geliştirici ajanları, özel ve yüksek düzeyde seçilmiş bilgiye sahip süper odaklı uzman ajanlardır. Örneğin: bir programlama dilinin resmi dokümanları veya belki bir protokolün/şirketin dahili API referansı.
Gaia, herkesin çok fazla karmaşıklık olmadan böyle bir uzman aracı oluşturmasına olanak tanıyan üç parça sağlar. Parçaları bırakabileceğiniz takılabilir bir bilgi tabanı, OPENAI tarzı v1/sohbet/tamamlamaları ve modüler sistem istemlerini konuşan RAG farkındalı bir sohbet yığını.
Bir Vyper Akıllı Sözleşme Dili Dokümantasyon Aracı
Devam edelim ve Vyper akıllı sözleşme dili (Solidity'ye Python aromalı bir alternatif) için bir aracı oluşturalım. Burada gördüğünüz her şey -dizin düzeni, gömme komutları, düğüm yapılandırma bayrakları- başka herhangi bir doküman setine 1'e 1 çevrilir: Rust kitap bölümleri, Django REST API dokümanları, bir RFC arşivi veya herhangi bir doküman.
Docker'ınızın çalıştığından emin olun ve vektör qdrant
çalıştırılarak yüklenir docker pull qdrant/qdrant
Ön Koşullar: Bir Kez Yükleyeceğiniz Araçlar
WasmEdge Çalışma Zamanı - Gaia'nın gömme yardımcı programı hafif bir WebAssembly modülü olarak gönderilir; WasmEdge, onu Linux / macOS / Windows üzerinde yerel olarak çalıştıran yürütme motorudur:
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash -s
Neden Wasm? Çünkü asla pip yüklemesine ihtiyaç duymayan bir yapı eseri (tek bir .wasm dosyası) elde edersiniz. Güvenlik ekipleri deterministik ikiliyi sever; DevOps sıfır bağımlılık hikayesini sever.
Model Ağırlıklarının Yerleştirilmesi - 768 boyutlu cümle vektörlerinizi üreten model Hugging Face'te yaşıyor:
curl -LO https://huggingface.co/gaianet/Nomic-embed-text-v1.5-Embedding-GGUF/resolve/main/nomic-embed-text-v1.5.f16.gguf
Bu ağırlıklar, GGML'nin modern halefi olan, diskten verimli bir şekilde akış sağlayan ve yalnızca CPU kutuları için nicelleştirilmiş varyantları destekleyen GGUF formatındadır.
Şu şekilde iki klasör oluşturalım qdrant_storage
ve qdrant_snapshots
. Anlık görüntüsü alınmış bilgi tabanımızı içeride bulacağız qdrant_snapshots
.
mkdir qdrant_storage
mkdir qdrant_snapshots
nohup docker run -d -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
-v $(pwd)/qdrant_snapshots:/qdrant/snapshots:z \
qdrant/qdrant
Birkaç iyi uygulama notu:
- Rust/Go Qdrant istemcileri ile toplu yükleme komut dosyası yazacağınızı veya kıyaslama çalıştıracağınızı düşünüyorsanız 6333 (REST/JSON) ve 6334 (gRPC) haritalarını kullanın.
- Qdrant_storage'ı bağlı bir birimde kalıcı hale getirmek, vektörlerinizin bir konteynerin yeniden başlatılmasından sonra da hayatta kalacağı ve daha sonra anlık görüntüler için tar-gz'lenebileceği anlamına gelir.
Koleksiyon Oluşturma
Varsayılan Gaia örnek koleksiyonu farklı bir boyut boyutu kullandığı için yeni başlıyoruz.
Elimizde veri varsa kaldıralım:
# Temiz herhangi bir eski veri
kıvrıl -X SİL 'http://localhost:6333/collections/default'
Ve sonra aşağıdakileri çalıştırın.
# Provision a 768-dimensional, cosine-distance space
curl -X PUT 'http://localhost:6333/collections/default' \
-H 'Content-Type: application/json' \
--data-raw '{
"vectors": {
"size": 768,
"distance": "Cosine",
"on_disk": true
}
}'
Derlem yüz binlerce parçaya ulaştığında on_disk bayrağı sizin dostunuzdur; Qdrant vektörleri bellekte eşler ve LLM'niz için RAM bırakır.
Yerleştirmelerin Üretilmesi
Yerleştirme CLI'ını Yakalayalım
curl -LO https://github.com/GaiaNet-AI/embedding-tools/raw/main/csv_embed/csv_embed.wasm
Belgelerinizi şu şekilde hazırlayın
Neden Markdown yerine CSV? CSV kullanmayı markdown kullanmaktan daha kolay buldum ve her parçanızı farklı sütunlara ve sütun başına bir hücreye yapıştırırsanız daha iyi olur. Kullanmakta özgürsünüz llm_info.txt
dosyası, eğer tercih ettiğiniz buysa.
Gitingest 'i vyper docs git deposunu kod tabanının basit bir metin özetine dönüştürmek için kullandım, bu da bir kod tabanını / belgeleri LLM'ye beslemek için gerçekten yararlıdır.
Vektörleri Oluşturma
Csv dosyasının/llm_info.txt dosyasının aynı dizinde olduğundan emin olalım ve vektörleri oluşturalım.
wasmedge --dir .:. \
--nn-preload embedding:GGML:AUTO:nomic-embed-text-v1.5.f16.gguf \
csv_embed.wasm embedding default 768 your_docs.csv --ctx_size 8192
- Bayrakların dökümü:
- -dir .:. wasm sandbox'a çalışma dizininde okuma/yazma yetkisi verir, böylece CSV'de akış yapabilir ve vektörleri Qdrant'a geri yazabilir.
- -nn-preload embedding:GGML:AUTO:... modeli bir kez önceden yükler ve 1.000 parça başına ~2 saniye tasarruf sağlar.
- ctx_size, sohbet modelinin değil, gömme modelinin içinde kullanılan ikincil belirteç penceresidir; doküman paragraflarınız uzunsa ve günlüklerde kesmeler görüyorsanız bunu artırın.
Yeni parçaları çakışma olmadan eklemek için komutu --start_vector_id ile birden çok kez çalıştırabilirsiniz; Qdrant ID'leri tam sayıdır, bu nedenle üç aylık belge güncellemeleri planlıyorsanız 100_000 gibi bir ofset seçin.
Bilgi Tabanınızı Paketleme ve Dağıtma
Bir anlık görüntü, Qdrant'ın atomik olarak geri yükleyebileceği JSON ve Parquet dosyalarından oluşan bir dizinden başka bir şey değildir. Sıkıştırmak genellikle 3'e 1 boyut avantajı sağlar çünkü vektörler oldukça tekrarlayıcıdır.
curl -X POST 'http://localhost:6333/collections/default/snapshots'
Şimdi anlık görüntüleri sıkıştırma zamanı, şu adrese gidelim qdrant_snapshots/default
ve ardından çalıştırarak sıkıştırın.
tar czvf benim.anlık görüntü.katran.gz benim.anlık görüntü
Bunun yerine benim.anlık görüntüm
sadece dosya adını kullanın. my.snapshot.tar.gz dosyasını huggingface'e yükleyin, orada bir hesabınız olması gerekir. Şimdi yeni veri kümesine tıklayın ve bilgi tabanınızı oraya yükleyin.
Bazı En İyi Uygulamalar (Zor Yoldan Öğrendim)
-
Yığınlama Stratejisi
Vektör başına 200-500 belirteç hedefleyin. Çok kısa olursa dizini binlerce neredeyse aynı katıştırma (gürültü) ile doldurursunuz. Çok uzun olursa geri alma adımı, modelin asla tam olarak okuyamadığı yayılan bloklar döndürür.
-
Sistem İstemi Mühendisliği
İfade yetenekleri ve korkuluklar. Örnek:
"Siz bir Vyper dil asistanısınız. Vyper olmayan sorular sorulursa, tek cümlelik bir özürle kibarca reddedin. Her cevapta kod satır numaralarını belirtin."
-
Sürekli Değerlendirme Döngüsü
Gerçek kullanıcı sorgularını bir elektronik tabloya aktarın, bunları elle "Yararlı/Yararsız" olarak etiketleyin ve kalıpları arayın: insanlar sözdiziminden çok güvenlikle ilgili en iyi uygulamaları mı soruyor? Bu size hangi doküman bölümlerinin daha zengin örneklere ihtiyaç duyduğunu gösterir.
Bilgi tabanını huggingface'e yükledikten sonra, sıra llm'miz için bilgi tabanını değiştirmeye geldi. Henüz kendi node'unuzu çalıştırmak için değişiklik yapmadıysanız, buraya gidip başlayabilirsiniz.
Belirli bir düğümü güneşlendirmek istiyorsak, buraya gidelim ve benim için uygun olan bir LLM seçelim.
Kurulumdan sonra aşağıdakileri çalıştırmamız gerekecek:
gaianet yapılandırma \
--anlık görüntü https://SARILAN YÜZ.co/veri kümeleri/meowy-ai/vyper-lang/çözmek/ana/varsayılan-845259036638694-2025-04-22-09-28-18.anlık görüntü.katran.gz \
--sistem-istemi "Siz yardımcı bir vyper lang eğitmenisiniz, lütfen soruları cevaplayın"
Buraya. --snapshot https://huggingface.co/...
huggingface'e yüklediğim bilgi bankamın indirme bağlantısıdır.
Terminalinizde aşağıdaki gibi bir şey göreceksiniz:
[+] Güncelleniyor sistem istemi . sohbet modeli ...
* Eski sistem istemi: Sen yardımcı bir vyper lang eğitmenisiniz, lütfen soruları cevaplayın
* Yeni sistem istemi: Sen yardımcı bir web3 eğitmenidir, lütfen soruları cevaplayın
[+] Güncelleniyor url . anlık görüntü ...
* Eski url: https://SARILAN YÜZ.co/veri kümeleri/meowy-ai/web3-BİLGİ-taban/çözmek/ana/varsayılan-8461598741381726-2025-04-29-07-50-41.anlık görüntü.katran.gz
* Yeni url: https://SARILAN YÜZ.co/veri kümeleri/meowy-ai/vyper-lang/çözmek/ana/varsayılan-845259036638694-2025-04-22-09-28-18.anlık görüntü.katran.gz
✅ TAMAMLANDI! Bu yapılandırma.json başarıyla güncellendi.
Şimdi devam etmeli ve gaia düğümünü şu şekilde başlatmalısınız gaianet başlangıç
.
Artık düğüm, az önce güncellediğimiz vyper bilgi tabanını kullanacaktır. Dokümantasyon aracımızı başarıyla oluşturduk.