Vertex AI eklentisi

Vertex AI eklentisi, çeşitli yapay zeka hizmetlerine arayüz sağlar:

Kurulum

npm i --save @genkit-ai/vertexai

Bu eklentiyi kullanan akışları yerel olarak çalıştırmak istiyorsanız Google Cloud CLI aracı yüklenmiş olmalıdır.

Yapılandırma

Bu eklentiyi kullanmak için configureGenkit()'ü çağırırken belirtin:

import { vertexAI } from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({ projectId: 'your-cloud-project', location: 'us-central1' }),
  ],
  // ...
});

Eklenti, Google Cloud projenizin kimliğini belirtmenizi gerektirir. region [bölge] Vertex API isteklerinde bulunmak istediğiniz paket ve Google Cloud projeniz kimlik bilgileri.

  • Google Cloud proje kimliğinizi, şurada projectId öğesini ayarlayarak belirtebilirsiniz: vertexAI() yapılandırmasını veya GCLOUD_PROJECT ortamını ayarlayarak değişkenine eklenmelidir. Akışınızı bir Google Cloud ortamından (Cloud Functions, Cloud Run vb.) çalıştırıyorsanız GCLOUD_PROJECT, ortamın proje kimliğine otomatik olarak ayarlanır.

  • API konumunu, vertexAI() yapılandırmasında location'ü ayarlayarak veya GCLOUD_LOCATION ortam değişkenini ayarlayarak belirtebilirsiniz.

  • API kimlik bilgilerini sağlamak için Google Cloud uygulamasını kurmanız gerekir. Varsayılan Kimlik Bilgileri.

    1. Kimlik bilgilerinizi belirtmek için:

      • Akışınızı bir Google Cloud ortamından (Cloud Functions, Cloud Run vb.) çalıştırıyorsanız bu ayar otomatik olarak yapılır.

      • Yerel geliştirme ortamınızda bu işlemi aşağıdaki komutu çalıştırarak yapın:

      gcloud auth application-default login
    2. Ayrıca hesaba Vertex AI Kullanıcısı IAM rolü verildiğinden emin olun. (roles/aiplatform.user). Vertex AI erişim denetimine göz atın. dokümanlar.

Kullanım

Üretken yapay zeka modelleri

Bu eklenti, desteklenen üretken yapay zeka modellerine yapılan referansları statik olarak dışa aktarır:

import { gemini15Flash, gemini15Pro, imagen2 } from '@genkit-ai/vertexai';

generate()'ün hangi modeli kullandığını belirtmek için aşağıdaki referansları kullanabilirsiniz:

const llmResponse = await generate({
  model: gemini15Flash,
  prompt: 'What should I do when I visit Melbourne?',
});

Bu eklenti, Google Arama veya kendi verilerinizi kullanarak Gemini metin yanıtlarını temellendirmeyi de destekler.

Örnek:

await generate({
  model: gemini15Flash,
  prompt: ...,
  config: {
    googleSearchRetrieval: {
      disableAttribution: true,
    }
    vertexRetrieval: {
      datastore: {
        projectId: 'your-cloud-project',
        location: 'us-central1',
        collection: 'your-collection',
      },
      disableAttribution: true,
    }
  }
})

Bu eklenti ayrıca, yerleştirilmiş Gecko metin referansını statik olarak dışa aktarır model:

import { textEmbeddingGecko } from '@genkit-ai/vertexai';

Bir dizine ekleyen veya alıcı aracının hangi yerleştiriciyi kullandığını belirtmek için bu referansı kullanabilirsiniz. Örneğin, Chroma DB kullanıyorsanız:

configureGenkit({
  plugins: [
    chroma([
      {
        embedder: textEmbeddingGecko,
        collectionName: 'my-collection',
      },
    ]),
  ],
});

Dilerseniz doğrudan bir yerleştirme oluşturabilirsiniz:

// import { embed, EmbedderArgument } from '@genkit-ai/ai/embedder';
const embedding = await embed({
  embedder: textEmbeddingGecko,
  content: 'How many widgets do you have in stock?',
});

Imagen3 modeli, kullanıcı isteminden resim oluşturmanıza olanak tanır:

import { imagen3 } from '@genkit-ai/vertexai';

const response = await generate({
  model: imagen3,
  output: { format: 'media' },
  prompt: 'a banana riding a bicycle',
});

return response.media();

Vertex AI Model Garden'da Anthropic Claude 3

Vertex AI Model Garden'da Claude 3 modellerine (haiku, sonnet veya opus) erişiminiz varsa bunları Genkit ile kullanabilirsiniz.

Vertex AI Model Garden modellerini etkinleştirmek için örnek yapılandırma aşağıda verilmiştir:

import {
  vertexAI,
  claude3Haiku,
  claude3Sonnet,
  claude3Opus,
} from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({
      location: 'us-central1',
      modelGarden: {
        models: [claude3Haiku, claude3Sonnet, claude3Opus],
      },
    }),
  ],
});

Ardından bunları normal modeller olarak kullanın:

const llmResponse = await generate({
  model: claude3Sonnet,
  prompt: 'What should I do when I visit Melbourne?',
});

Vertex AI Model Garden'da Llama 3.1 405b

Öncelikle Vertex AI Model Garden'da Llama 3.1 API Hizmeti'ni etkinleştirmeniz gerekir.

Vertex AI eklentisinde Llama 3.1 405b için örnek yapılandırma aşağıda verilmiştir:

import { vertexAI, llama31 } from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({
      location: 'us-central1',
      modelGarden: {
        models: [llama31],
      },
    }),
  ],
});

Daha sonra, bunu normal modeller olarak kullanın:

const llmResponse = await generate({
  model: llama31,
  prompt: 'Write a function that adds two numbers together',
});

Değerlendiriciler

Vertex AI Hızlı Değerlendirme'deki değerlendiricileri kullanmak için vertexAI eklentisi yapılandırmanıza bir evaluation bloğu ekleyin.

import { vertexAI, VertexAIEvaluationMetricType } from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({
      projectId: 'your-cloud-project',
      location: 'us-central1',
      evaluation: {
        metrics: [
          VertexAIEvaluationMetricType.SAFETY,
          {
            type: VertexAIEvaluationMetricType.ROUGE,
            metricSpec: {
              rougeType: 'rougeLsum',
            },
          },
        ],
      },
    }),
  ],
  // ...
});

Yukarıdaki yapılandırma, Safety ve ROUGE metrikleri için değerlendiriciler ekler. Örnekte iki yaklaşım gösterilmektedir: Safety metriği varsayılan spesifikasyonu kullanırken ROUGE metriği, ruj türünü rougeLsum olarak ayarlayan özelleştirilmiş bir spesifikasyon sağlar.

Her iki değerlendirme aracı da uyumlu bir veri kümesiyle (yani output ve reference alanları içeren bir veri kümesiyle) genkit eval:run komutu kullanılarak çalıştırılabilir. Safety değerlendiricisi, yalnızca bir output gerektirdiğinden genkit eval:flow -e vertexai/safety komutu kullanılarak da çalıştırılabilir.

Dizine ekleyenler ve veri toplayıcılar

Genkit Vertex AI eklentisi, Vertex AI Vector Search hizmeti tarafından desteklenen dizine ekleme ve alma uygulamaları içerir.

(Dizine eklenenlerin nasıl performans gösterdiğini öğrenmek için Almayla artırılmış oluşturma sayfasına bakın. ve retriever'lar RAG uygulamasında kullanılıyor.)

Vertex AI Vector Search hizmeti, seçtiğiniz doküman deposuyla birlikte çalışan bir doküman dizinidir: Doküman deposu dokümanların içeriğini içerir ve Vertex AI Vector Search dizini her doküman için vektör gömmesini ve doküman deposundaki dokümana referansı içerir. Dokümanlarınız Vertex AI Vektör Arama hizmeti tarafından dizine eklendikten sonra, arama sorgularına yanıt vererek belge deponuza dizin listeleri oluşturabilirsiniz.

Vertex AI eklentisi tarafından sağlanan indexer ve retriever uygulamaları Cloud Firestore veya BigQuery'yi seçmeniz gerekir. Eklenti ayrıca diğer doküman depolarını desteklemek için uygulayabileceğiniz arayüzler içerir.

Vertex AI Vektör Arama'yı kullanmak için:

  1. Bir yerleştirme modeli seçin. Bu model, vektörü oluşturmaktan yerleştirilmiş öğeler. İleri düzey kullanıcılar, optimize edilmiş bir yerleştirme modelini kullanabilir ancak çoğu kullanıcı için Vertex AI'ın özellikleri text-embedding-004 modeli, İngilizce metin ve text-multilingual-embedding-002 modeli çok dilli metinler için uygundur.

  2. Google Cloud Console'un Vektör Arama bölümünde yeni bir dizin oluşturun. En önemli şunlardır:

    • Boyutlar: Seçtiğiniz yerleştirme modeli tarafından üretilen vektörlerin boyutunu belirtin. text-embedding-004 ve text-multilingual-embedding-002 modelleri 768 boyutluk vektörler oluşturur.

    • Güncelleme yöntemi: Akış güncellemelerini seçin.

    Dizini oluşturduktan sonra standart (herkese açık) bir uç noktaya dağıtın.

  3. Kullanmak istediğiniz doküman deposu için bir doküman dizinleyici ve "alıcı" edinin:

    Cloud Firestore

    import {
      getFirestoreDocumentIndexer,
      getFirestoreDocumentRetriever
    } from '@genkit-ai/vertexai';
    
    import { initializeApp } from 'firebase-admin/app';
    import { getFirestore } from 'firebase-admin/firestore';
    
    initializeApp({ projectId: PROJECT_ID });
    const db = getFirestore();
    
    const firestoreDocumentRetriever: DocumentRetriever =
      getFirestoreDocumentRetriever(db, FIRESTORE_COLLECTION);
    const firestoreDocumentIndexer: DocumentIndexer =
      getFirestoreDocumentIndexer(db, FIRESTORE_COLLECTION);
    

    BigQuery

    import {
      getBigQueryDocumentIndexer,
      getBigQueryDocumentRetriever,
    } from '@genkit-ai/vertexai';
    import { BigQuery } from '@google-cloud/bigquery';
    
    const bq = new BigQuery({ projectId: PROJECT_ID });
    
    const bigQueryDocumentRetriever: DocumentRetriever =
      getBigQueryDocumentRetriever(bq, BIGQUERY_TABLE, BIGQUERY_DATASET);
    const bigQueryDocumentIndexer: DocumentIndexer =
      getBigQueryDocumentIndexer(bq, BIGQUERY_TABLE, BIGQUERY_DATASET);
    

    Diğer

    Diğer doküman depolarını desteklemek için DocumentRetriever ve DocumentIndexer için kendi uygulamalarınızı sağlayabilirsiniz:

    const myDocumentRetriever: DocumentRetriever = async (neighbors: Neighbor[]) => {
      // Return the documents referenced by `neighbors`.
      // ...
    }
    const myDocumentIndexer: DocumentIndexer = async (documents: Document[]) => {
      // Add `documents` to storage.
      // ...
    }
    

    Örnek için Sample Vertex AI Plugin Retriever ve Indexer with Local File (Yerel Dosya İçeren Örnek Vertex AI Plugin Retriever ve Indexer) bölümüne bakın.

  4. vertexAI eklenti yapılandırmanıza bir vectorSearchOptions bloğu ekleyin:

    import { configureGenkit } from '@genkit-ai/core';
    import { vertexAI, textEmbedding004 } from '@genkit-ai/vertexai';
    
    configureGenkit({
      plugins: [
        vertexAI({
          projectId: PROJECT_ID,
          location: LOCATION,
          vectorSearchOptions: [
            {
              indexId: VECTOR_SEARCH_INDEX_ID,
              indexEndpointId: VECTOR_SEARCH_INDEX_ENDPOINT_ID,
              deployedIndexId: VECTOR_SEARCH_DEPLOYED_INDEX_ID,
              publicDomainName: VECTOR_SEARCH_PUBLIC_DOMAIN_NAME,
              documentRetriever: firestoreDocumentRetriever,
              documentIndexer: firestoreDocumentIndexer,
              embedder: textEmbedding004,
            },
          ],
        }),
      ],
    });
    

    İlk adımda seçtiğiniz yerleştiriciyi ve doküman dizinleyiciyi sağlayın ve retriever'a eklemeniz gerekiyor.

    Eklentiyi daha önce oluşturduğunuz Vector Search dizinini kullanacak şekilde yapılandırmak için Google Cloud Console'un Vector Search bölümünde bulabileceğiniz birkaç değeri sağlamanız gerekir:

    • indexId: Dizini sekmesinde listelenir.
    • indexEndpointId: Dizine Eklenen Uç Noktalar sekmesinde listelenmiştir.
    • deployedIndexId ve publicDomainName: Daha önce bahsedilen sekmelerden birinde dağıtılan dizinin adını tıklayarak açtığınız "Dağıtılan dizin bilgileri" sayfasında listelenir.
  5. Tüm ayarlar tamamlandığında, eklentiden alıcı ve dizine ekleyen referanslarını içe aktarın:

    import {
      vertexAiIndexerRef,
      vertexAiRetrieverRef,
    } from '@genkit-ai/vertexai';
    

    index() ve retrieve() referanslarını iletin:

    await index({
      indexer: vertexAiIndexerRef({
        indexId: VECTOR_SEARCH_INDEX_ID,
      }),
      documents,
    });
    
    const res = await retrieve({
      retriever: vertexAiRetrieverRef({
        indexId: VECTOR_SEARCH_INDEX_ID,
      }),
      query: queryDocument,
    });
    

Aşağıdaki kod örneklerine bakın: