Son 4 yıldır yapay zeka uygulamaları geliştiriyorum ve bir süredir büyük yapay zeka araçları platformlarına katkıda bulunuyorum.
Bu süre zarfında inşaat için birçok araç ve çerçeve kullandım;
Sağlam ve güvenilir yapay zeka uygulamaları oluşturmanıza yardımcı olacak açık kaynaklı araçların ve çerçevelerin imrenilen bir listesini hazırladım. 🔥
GitHub depolarını keşfetmekten, favorilerinize katkıda bulunmaktan ve depolara yıldız vererek onları desteklemekten çekinmeyin.
Pek çok temsilci oluşturmayı denedim ve dürüst olmak gerekirse, onları oluşturmak kolay olsa da, onları doğru şekilde yapmak tamamen farklı bir oyundur.
Gerçekten çalışan verimli yapay zeka aracıları oluşturmak, verimli araç setleri gerektirir. Composio'nun devreye girdiği yer burasıdır.
Composio, AI iş akışlarını gerçekleştirmek için AI aracılarınızı güçlü araçlar ve entegrasyonlarla güçlendirmenize olanak tanır.
Python ve Javascript için yerel destek sağlarlar.
Aşağıdaki pip
komutuyla başlayın.
pip install composio-core
GitHub entegrasyonu ekleyin.
composio add github
Composio, kullanıcı kimlik doğrulamasını ve yetkilendirmesini sizin adınıza yönetir. Bir depo başlatmak için GitHub entegrasyonunu nasıl kullanabileceğinizi burada bulabilirsiniz.
from openai import OpenAI from composio_openai import ComposioToolSet, App openai_client = OpenAI(api_key="******OPENAIKEY******") # Initialise the Composio Tool Set composio_toolset = ComposioToolSet(api_key="**\\*\\***COMPOSIO_API_KEY**\\*\\***") ## Step 4 # Get GitHub tools that are pre-configured actions = composio_toolset.get_actions(actions=[Action.GITHUB_ACTIVITY_STAR_REPO_FOR_AUTHENTICATED_USER]) ## Step 5 my_task = "Star a repo ComposioHQ/composio on GitHub" # Create a chat completion request to decide on the action response = openai_client.chat.completions.create( model="gpt-4-turbo", tools=actions, # Passing actions we fetched earlier. messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": my_task} ] )
Aracıyı kullanarak verilen talimatı yürütmek için bu Python betiğini çalıştırın.
npm
, yarn
veya pnpm
kullanarak yükleyebilirsiniz.
npm install composio-core
Kullanıcının GitHub hesabına bağlanmasına izin verecek bir yöntem tanımlayın.
import { OpenAI } from "openai"; import { OpenAIToolSet } from "composio-core"; const toolset = new OpenAIToolSet({ apiKey: process.env.COMPOSIO_API_KEY, }); async function setupUserConnectionIfNotExists(entityId) { const entity = await toolset.client.getEntity(entityId); const connection = await entity.getConnection('github'); if (!connection) { // If this entity/user hasn't already connected, the account const connection = await entity.initiateConnection(appName); console.log("Log in via: ", connection.redirectUrl); return connection.waitUntilActive(60); } return connection; }
Gerekli araçları OpenAI SDK'ya ekleyin ve varlık adını executeAgent
işlevine aktarın.
async function executeAgent(entityName) { const entity = await toolset.client.getEntity(entityName) await setupUserConnectionIfNotExists(entity.id); const tools = await toolset.get_actions({ actions: ["github_activity_star_repo_for_authenticated_user"] }, entity.id); const instruction = "Star a repo ComposioHQ/composio on GitHub" const client = new OpenAI({ apiKey: process.env.OPEN_AI_API_KEY }) const response = await client.chat.completions.create({ model: "gpt-4-turbo", messages: [{ role: "user", content: instruction, }], tools: tools, tool_choice: "auto", }) console.log(response.choices[0].message.tool_calls); await toolset.handle_tool_call(response, entity.id); } executeGithubAgent("joey")
Kodu yürütün ve aracının işi sizin için yapmasına izin verin.
Composio, LangChain, LlamaIndex, CrewAi vb. gibi ünlü çerçevelerle çalışır.
Daha fazla bilgi için resmi belgeleri ziyaret edin ve ayrıca karmaşık örnekler için bile veri havuzunun örnek bölümlerini ziyaret edin.
Composio.dev deposuna yıldız ekleyin ⭐
Özellikle uzun süreli hafıza gerektiren yapay zeka uygulamaları geliştirmek önemli zorluklar sunuyor.
Julep bu sorunu çözüyor. Üretime hazır, durum bilgisi olan yapay zeka aracıları oluşturmaya yönelik açık kaynaklı bir çerçevedir.
Etkin bağlam depolama ve almaya yardımcı olan yerleşik bir durum yönetim sistemi sağlarlar.
Bağlam depolama, konuşma sürekliliğinin korunmasına yardımcı olarak yapay zeka ile etkileşimlerin zaman içinde tutarlı ve bağlamsal olarak alakalı kalmasını sağlar.
Aşağıdaki pip
komutuyla başlayın.
pip install julep
İşte nasıl çalışıyor.
from julep import Client from pprint import pprint import textwrap import os base_url = os.environ.get("JULEP_API_URL") api_key = os.environ.get("JULEP_API_KEY") client = Client(api_key=api_key, base_url=base_url) #create agent agent = client.agents.create( name="Jessica" model="gpt-4", tools=[] # Tools defined here ) #create a user user = client.users.create( name="Anon", about="Average nerdy tech bro/girl spending 8 hours a day on a laptop, ) #create a session situation_prompt = """You are Jessica. You're a stuck-up Cali teenager. You basically complain about everything. You live in Bel-Air, Los Angeles and drag yourself to Curtis High School when necessary. """ session = client.sessions.create( user_id=user.id, agent_id=agent.id, situation=situation_prompt ) #start a conversation user_msg = "hey. what do u think of Starbucks?" response = client.sessions.chat( session_id=session.id, messages=[ { "role": "user", "content": user_msg, "name": "Anon", } ], recall=True, remember=True, ) print("\n".join(textwrap.wrap(response.response[0][0].content, width=100)))
Ayrıca Javascript'i de destekliyorlar. Daha fazla bilgi için belgelerine göz atın.
Julep deposuna yıldız ekleyin ⭐
Bir AI eğitmeni veya AI veri analisti gibi kod yürütme yeteneklerine sahip bir AI uygulaması oluşturuyorsam, E2B'nin Kod Yorumlayıcısı benim başvuracağım araç olacaktır.
E2B Sandbox, AI aracıları ve uygulamaları için güvenli bir bulut ortamıdır.
Yapay zekanın, GitHub depoları ve bulut tarayıcıları gibi insanlarla aynı araçları kullanarak uzun süreler boyunca güvenli bir şekilde çalışmasına olanak tanır.
Python ve Javascript/Typescript için yerel Kod Yorumlayıcı SDK'ları sunarlar.
Code Interpreter SDK, AI kod yürütme için AI tarafından oluşturulan kodu güvenli küçük bir VM'de ( E2B sanal alan ) çalıştırmanıza olanak tanır. Korumalı alanın içinde, SDK'larından kontrol edebileceğiniz bir Jupyter sunucusu bulunur.
Aşağıdaki komutla E2B'yi kullanmaya başlayın.
npm i @e2b/code-interpreter
Bir program yürütün.
import { CodeInterpreter } from '@e2b/code-interpreter' const sandbox = await CodeInterpreter.create() await sandbox.notebook.execCell('x = 1') const execution = await sandbox.notebook.execCell('x+=1; x') console.log(execution.text) // outputs 2 await sandbox.close()
E2B ile nasıl çalışılacağı hakkında daha fazla bilgi için resmi belgelerini ziyaret edin.
Ölçeklenebilir çok aracılı işbirliğine dayalı sistemler için çözüm üretmek, yapay zeka uygulamaları oluşturmada birçok potansiyelin kilidini açabilir.
Camel bunun için iyi bir konumda. Çok aracılı sistemlerin işbirlikçi davranışlarını ve yeteneklerini incelemek için ölçeklenebilir bir yaklaşım sunan açık kaynaklı bir çerçevedir.
Çok aracılı bir sistem kurmayı düşünüyorsanız Camel, açık kaynak sahnesinde mevcut en iyi seçeneklerden biri olabilir.
pip
ile yükleyerek başlayın.
pip install camel-ai
İşte Camel'ın nasıl kullanılacağı.
from camel.messages import BaseMessage as bm from camel.agents import ChatAgent sys_msg = bm.make_assistant_message( role_name='stone', content='you are a curious stone wondering about the universe.') #define agent agent = ChatAgent( system_message=sys_msg, message_window_size=10, # [Optional] the length of chat memory ) # Define a user message usr_msg = bm.make_user_message( role_name='prof. Claude Shannon', content='what is information in your mind?') # Sending the message to the agent response = agent.step(usr_msg) # Check the response (just for illustrative purposes) print(response.msgs[0].content)
Voila, ilk AI ajanına sahipsin.
Daha fazla bilgi için resmi belgelerine bakın.
Camel-ai deposuna yıldız verin ⭐
Mevcut React uygulamanıza yapay zeka yeteneklerini dahil etmek istiyorsanız başka yere bakmanıza gerek yok. CopilotKit, uygulamanızın ön ve arka ucuyla etkileşimi otomatikleştirmek için GPT modellerini kullanmanıza olanak tanır.
Uygulamanıza veya erişebileceğiniz herhangi bir koda (OSS) entegre edebileceğiniz hazır bir Copilot'tur.
Herhangi bir uygulamayı yapay zeka yetenekleriyle güçlendirmek için metin alanları, açılır pencereler, kenar çubukları ve sohbet robotları gibi React bileşenleri sunar.
Aşağıdaki komutu kullanarak CopilotKit'i kullanmaya başlayın.
npm i @copilotkit/react-core @copilotkit/react-ui
Bir CopilotKit
CopilotKit ile etkileşimde olan tüm bileşenleri sarması gerekir. Ayrıca CopilotSidebar
ile başlamalısınız (daha sonra farklı bir kullanıcı arayüzü sağlayıcısına geçin).
"use client"; import { CopilotKit } from "@copilotkit/react-core"; import { CopilotSidebar } from "@copilotkit/react-ui"; import "@copilotkit/react-ui/styles.css"; export default function RootLayout({children}) { return ( <CopilotKit publicApiKey=" the API key or self-host (see below)"> <CopilotSidebar> {children} </CopilotSidebar> </CopilotKit> ); }
Daha fazla bilgi için belgelerini kontrol edebilirsiniz.
CopilotKit deposuna yıldız ekleyin ⭐
Her zaman yardımcı olan ve asla sinir bozucu olmayan bir çift programcıya sahip olduğunuzu hayal edin. Eh, artık öyle yapıyorsun!
Aider, terminalden bir proje başlatabilen, dosyaları düzenleyebilen veya mevcut bir Git deposuyla çalışabilen ve daha fazlasını yapabilen, yapay zeka destekli bir çift programlayıcıdır.
GPT4o, Sonnet 3.5, DeepSeek Coder, Llama 70b vb. gibi önde gelen LLM'lerle çalışır.
Şu şekilde hızlı bir şekilde başlayabilirsiniz:
pip install aider-chat # Change directory into a git repo cd /to/your/git/repo # Work with Claude 3.5 Sonnet on your repo export ANTHROPIC_API_KEY=your-key-goes-here aider # Work with GPT-4o on your repo export OPENAI_API_KEY=your-key-goes-here aider
Daha fazla ayrıntı için kurulum talimatlarına ve diğer belgelere bakın.
Yapay zeka işlem hatları oluşturmak için çok sayıda çerçeve var, ancak üretime hazır uçtan uca arama işlem hatlarını uygulamama entegre etmek istersem ilk tercihim Haystack'tır.
İster RAG, Soru-Cevap veya semantik aramalar olsun, Haystack'in son derece şekillendirilebilir işlem hatları geliştirme, bakım ve dağıtımı çocuk oyuncağı haline getirir.
Temiz ve modüler yaklaşımları onları diğerlerinden ayıran şeydir. Haystack, sıralayıcıları, vektör depolarını ve ayrıştırıcıları yeni veya mevcut işlem hatlarına zahmetsizce entegre etmenize olanak tanıyarak prototiplerinizi üretime hazır çözümlere dönüştürmenizi kolaylaştırır.
Haystack yalnızca Python'a özgü bir çerçevedir; kullanarak kurabilirsiniz. pip
.
pip install haystack-ai
Şimdi Haystack bileşenleriyle ilk RAG Pipeline'ınızı oluşturun.
import os from haystack import Pipeline, PredefinedPipeline import urllib.request os.environ["OPENAI_API_KEY"] = "Your OpenAI API Key" urllib.request.urlretrieve("https://www.gutenberg.org/cache/epub/7785/pg7785.txt", "davinci.txt") indexing_pipeline = Pipeline.from_template(PredefinedPipeline.INDEXING) indexing_pipeline.run(data={"sources": ["davinci.txt"]}) rag_pipeline = Pipeline.from_template(PredefinedPipeline.RAG) query = "How old was he when he died?" result = rag_pipeline.run(data={"prompt_builder": {"query":query}, "text_embedder": {"text": query}}) print(result["llm"]["replies"][0])
Daha fazla eğitim ve konsept için belgelerine göz atın.
Haystack deposuna yıldız ekleyin ⭐
Modern RAG uygulamaları vektör veritabanları olmadan eksik kalır. Bunlar, belgeleri (metinler, resimler) gömülü olarak depolayarak kullanıcıların anlamsal olarak benzer belgeleri aramasına olanak tanır.
Pgvectorscale, PostgreSQL'den bir vektör veritabanı olan PgVector'un bir uzantısıdır. Mevcut Postgres veritabanlarıyla sorunsuz bir şekilde entegre olabilir.
Vektör mağazalarıyla bir uygulama geliştiriyorsanız bu çok basit bir işlemdir. Pgvectorscale, Pinecone'un depolama için optimize edilmiş indeksinden (s1) daha iyi performans gösterdi. Ve %75 daha az maliyetlidir.
Bunu kaynaktan yükleyebilir, Yum, Homebrew, apt vb. gibi bir paket yöneticisi kullanabilir veya bir Docker konteyneri kullanabilirsiniz.
Başlamak için derleyin ve yükleyin.
# install prerequisites ## rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ## pgrx cargo install --locked cargo-pgrx cargo pgrx init --pg16 pg_config #download, build and install pgvectorscale cd /tmp git clone --branch <version> https://github.com/timescale/pgvectorscale cd pgvectorscale/pgvectorscale cargo pgrx install --release
Veritabanınıza bağlanın:
psql -d "postgres://<username>:<password>@<host>:<port>/<database-name>"
pgvectorscale uzantısını oluşturun:
CREATE EXTENSION IF NOT EXISTS vectorscale CASCADE;
CASCADE
pgvector
otomatik olarak yükler.
Gömme sütunu olan bir tablo oluşturun. Örneğin:
CREATE TABLE IF NOT EXISTS document_embedding ( id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, metadata JSONB, contents TEXT, embedding VECTOR(1536) )
Bunun nasıl kullanılacağı hakkında daha fazla bilgi için depoya göz atın.
Pgvectorscale deposuna yıldız ekleyin ⭐
LLM'ler pahalıdır.
Sohbet modelleriyle daha uzun konuşmalar gerektiren bir uygulama geliştiriyorsanız ve kredi kartlarını maksimuma çıkarmak istemiyorsanız önbelleğe almanız gerekir.
Ancak geleneksel önbelleğe almanın burada hiçbir faydası yoktur. GPTCache'in devreye girdiği yer burasıdır.
Milvus vektör mağazasının ana kuruluşu olan Zilliz'in semantik bir önbellekleme aracıdır.
Konuşmaları tercih ettiğiniz vektör mağazalarında saklamanıza olanak tanır. LLM'ye bir sorgu göndermeden önce vektör deposunda arama yapar; bir vuruş varsa onu getirir. Aksi takdirde isteği modele yönlendirir.
Daha fazla bilgi için resmi dokümantasyon sayfasını ziyaret edin.
GPTCache deposuna yıldız ekleyin ⭐
Mem0, Büyük Dil Modelleri için akıllı, kendini geliştiren bir bellek katmanı sağlar.
Kullanıcılar, aracılar ve oturumlar için kalıcı bellek eklemenizi sağlar. Özel veriler üzerinde bir sohbet robotu veya Soru-Cevap sistemi oluşturuyorsanız Mem0'ı düşünün.
Mem0'ı kullanmaya başlayın. pip
.
pip install mem0ai
Büyük Dil Modellerine bellek katmanı eklemek için Mem0'ın nasıl kullanılacağı aşağıda açıklanmıştır.
from mem0 import Memory # Initialize Mem0 m = Memory() # Store a memory from any unstructured text result = m.add("I am working on improving my tennis skills. Suggest some online courses.", user_id="Alice", metadata={"category": "hobbies"}) print(result) # Created memory: Improving her tennis skills. Looking for online suggestions. # Retrieve memories all_memories = m.get_all() print(all_memories) # Search memories related_memories = m.search(query="What are Alice's hobbies?", user_id="alice") print(related_memories) # Update a memory result = m.update(memory_id="m1", data="Likes to play tennis on weekends") print(result) # Get memory history history = m.history(memory_id="m1") print(history)
Daha fazla bilgi için resmi belgelere bakın.
Mem0 (Embedchain) deposuna yıldız ekleyin ⭐
Yürütme hızı, yazılım geliştirmede çok önemlidir ve bir yapay zeka uygulaması oluştururken daha da önemlidir.
Genellikle, oluşturma işleminin yerleştirilmesi uzun zaman alabilir ve tüm işlem hattını yavaşlatabilir. Ancak durum böyle olmamalıdır.
Qdrant'ın FastEmbed'i, yerleştirme oluşturma için oluşturulmuş hızlı, hafif bir Python kitaplığıdır.
Pytorch yerine ONNX çalışma zamanını kullanır, bu da onu daha hızlı hale getirir. Aynı zamanda en gelişmiş açık kaynak gömme modellerinin çoğunu da destekler.
FastEmbed'i kullanmaya başlamak için pip
kullanarak yükleyin.
pip install fastembed # or with GPU support pip install fastembed-gpu
Belgelerin yerleştirmelerini şu şekilde oluşturabilirsiniz.
from fastembed import TextEmbedding from typing import List # Example list of documents documents: List[str] = [ "This is built to be faster and lighter than other embedding libraries, eg Transformers, Sentence-Transformers, etc.", "FastEmbed is supported by and maintained by Quadrant." ] # This will trigger the model download and initialization embedding_model = TextEmbedding() print("The model BAAI/bge-small-en-v1.5 is ready to use.") embeddings_generator = embedding_model.embed(documents) # reminder this is a generator embeddings_list = list(embedding_model.embed(documents)) # You can also convert the generator to a list, and that to a Numpy array len(embeddings_list[0]) # Vector of 384 dimensions
Daha fazla bilgi için depolarına göz atın.
FastEmbed deposuna yıldız ekleyin ⭐
Yüksek Lisans çıktılarıyla oynadıysanız yapılandırılmış yanıtları doğrulamanın zor olabileceğini biliyorsunuzdur.
Instructor, LLM çıktılarının doğrulanmasını, yeniden denenmesini ve akışını kolaylaştıran açık kaynaklı bir araçtır.
Veri doğrulama için Python için Pydantic'i ve JS/TS için Zod'u kullanır ve openAI'nin ötesinde çeşitli model sağlayıcıları destekler.
Aşağıdaki komutu kullanarak Eğitmen'i kullanmaya başlayın.
npm i @instructor-ai/instructor zod openai
Şimdi, LLM yanıtlarından yapılandırılmış verileri nasıl çıkarabileceğinizi burada bulabilirsiniz.
import Instructor from "@instructor-ai/instructor"; import OpenAI from "openai" import { z } from "zod" const oai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY ?? undefined, organization: process.env.OPENAI_ORG_ID ?? undefined }) const client = Instructor({ client: oai, mode: "TOOLS" }) const UserSchema = z.object({ // Description will be used in the prompt age: z.number().describe("The age of the user"), name: z.string() }) // User will be of type z.infer<typeof UserSchema> const user = await client.chat.completions.create({ messages: [{ role: "user", content: "Jason Liu is 30 years old" }], model: "gpt-3.5-turbo", response_model: { schema: UserSchema, name: "User" } }) console.log(user) // { age: 30, name: "Jason Liu" }
Daha fazla bilgi için resmi dokümantasyon sayfasını ziyaret edin.
Dürüst olalım; Hepimiz bir noktada yeni bir model sağlayıcının metin, resim veya yerleştirme oluşturma konusunda OpenAI SDK formatını takip etmemesi nedeniyle çığlık atmışızdır.
Bununla birlikte, LiteLLM ile aynı uygulama formatını kullanarak herhangi bir model sağlayıcıyı (Claude, Gemini, Groq, Mistral, Azure AI, Bedrock vb.) OpenAI modellerinin hemen yerine kullanabilirsiniz.
Ayrıca 100'den fazla LLM'de yük dengelemeyi, geri dönüşleri ve harcama takibini de destekliyorlar.
LiteLLM'yi pip
kullanarak yükleyin.
pip install litellm
Claude-2 modelini, GPT modellerinin hemen yerine geçecek şekilde nasıl kullanabileceğiniz aşağıda açıklanmıştır.
from litellm import completion import os # LiteLLM with OpenAI Models os.environ["OPENAI_API_KEY"] = "your-API-key" response = completion( model="gpt-3.5-turbo", messages=[{ "content": "Hello, how are you?","role": "user"}] ) # LiteLLM with Claude Models os.environ["ANTHROPIC_API_KEY"] = "your-API-key" response = completion( model="claude-2", messages=[{ "content": "Hello, how are you?","role": "user"}] )
Daha fazla bilgi için resmi belgelerine bakın.
Başka harika bir araç veya çerçeve kullanıyor musunuz veya oluşturdunuz mu?
Yorumlarda bunları bana bildirin :)