المكوّن الإضافي للذكاء الاصطناعي التوليدي من Google

يوفّر المكوّن الإضافي للذكاء الاصطناعي التوليدي من Google واجهات لاستخدام نماذج Gemini من Google. من خلال Gemini API.

الإعداد

لاستخدام هذا المكون الإضافي، قم باستيراد حزمة googleai واستدعِ googleai.Init():

import "github.com/firebase/genkit/go/plugins/googleai"
if err := googleai.Init(ctx, nil); err != nil {
    return err
}

يتطلّب هذا المكوّن الإضافي مفتاح واجهة برمجة التطبيقات الخاص بـ Gemini API، ويمكنك الحصول عليه من خلال Google AI Studio:

يمكنك ضبط المكوّن الإضافي لاستخدام مفتاح واجهة برمجة التطبيقات من خلال تنفيذ أحد الإجراءات التالية:

  • اضبط متغيّر بيئة GOOGLE_GENAI_API_KEY على مفتاح واجهة برمجة التطبيقات.

  • حدد مفتاح واجهة برمجة التطبيقات عند تهيئة المكون الإضافي:

    if err := googleai.Init(ctx, &googleai.Config{APIKey: yourKey}); err != nil {
      return err
    }
    

    مع ذلك، لا تضمِّن مفتاح واجهة برمجة التطبيقات مباشرةً في الرمز. استخدام هذه الميزة فقط مع خدمة مثل Cloud Secret Manager أو ما شابه ذلك.

الاستخدام

النماذج التوليدية

للحصول على إشارة إلى نموذج متوافق، حدِّد معرِّفه:

langModel := googleai.Model("gemini-1.5-pro")

النماذج التالية متاحة: gemini-1.0-pro وgemini-1.5-pro و gemini-1.5-flash

تستخدِم مراجع النماذج طريقة Generate() تطلب البيانات من Google AI API:

genRes, err := langModel.Generate(ctx, ai.NewGenerateRequest(
    nil, ai.NewUserTextMessage("Tell me a joke.")), nil)
if err != nil {
    return err
}

يمكنك الاطّلاع على مقالة إنشاء المحتوى للحصول على مزيد من المعلومات.

نماذج تضمين

للحصول على مرجع إلى نموذج تضمين متوافق، حدِّد معرّفه:

embeddingModel := googleai.Embedder("text-embedding-004")

تتوفّر النماذج التالية: text-embedding-004 وembedding-001.

تستخدِم مراجع أداة التضمين طريقة Embed() لطلب البيانات من Google AI API:

embedRes, err := embeddingModel.Embed(ctx, &ai.EmbedRequest{
    Documents: []*ai.Document{ai.DocumentFromText(userInput, nil)},
})
if err != nil {
    return err
}

يمكنك أيضًا تمرير أداة تضمين إلى طريقة Index() للمفهرس وأداة استرداد طريقة Retrieve():

if err := myIndexer.Index(ctx, &ai.IndexerRequest{Documents: docsToIndex}); err != nil {
    return err
}
retrieveRes, err := myRetriever.Retrieve(ctx, &ai.RetrieverRequest{
    Document: ai.DocumentFromText(userInput, nil),
})
if err != nil {
    return err
}

راجِع الجيل الاسترجاعي (RAG) للحصول على مزيد من المعلومات.