Passer au contenu principal
Ouvrir dans Colab
Vous pouvez tester les modèles Google AI dans Weave sans aucune configuration à l’aide du LLM Playground.
Cette page explique comment utiliser W&B Weave avec l’API Google Vertex AI et l’API Google Gemini afin de pouvoir évaluer, surveiller et faire évoluer vos applications Google GenAI. Weave capture automatiquement des traces pour les éléments suivants :
Weave prend également en charge le SDK Python Google AI pour l’API Gemini, désormais obsolète. Cette prise en charge est également obsolète et sa suppression est prévue dans une prochaine version.

Pour commencer

Les exemples suivants montrent comment activer le tracing pour chaque SDK pris en charge. Dans les deux cas, appeler weave.init est la seule étape spécifique à Weave requise. Votre code Google GenAI ou Vertex AI existant reste inchangé. Weave capture automatiquement les traces avec le SDK Google GenAI. Pour démarrer le suivi, appelez weave.init(project_name="[YOUR-WANDB-PROJECT-NAME]"), puis utilisez la bibliothèque normalement.
import os
from google import genai
import weave

weave.init(project_name="google-genai")

google_client = genai.Client(api_key=os.getenv("GOOGLE_GENAI_KEY"))
response = google_client.models.generate_content(
    model="gemini-2.0-flash",
    contents="What's the capital of France?",
)
dspy_trace.png Weave capture aussi automatiquement les traces des API Vertex. Pour démarrer le suivi, appelez weave.init(project_name="[YOUR-WANDB-PROJECT-NAME]"), puis utilisez la bibliothèque normalement.
import vertexai
import weave
from vertexai.generative_models import GenerativeModel

weave.init(project_name="vertex-ai-test")
vertexai.init(project="[YOUR-VERTEX-AI-PROJECT-NAME]", location="[YOUR-VERTEX-AI-PROJECT-LOCATION]")
model = GenerativeModel("gemini-1.5-flash-002")
response = model.generate_content(
    "What's a good name for a flower shop specialising in selling dried flower bouquets?"
)

Suivez vos propres ops

Encapsulez une fonction avec @weave.op pour commencer à capturer les entrées, les sorties et la logique de l’application, afin de pouvoir déboguer la façon dont les données circulent dans votre application. Vous pouvez imbriquer des ops en profondeur et construire un arbre de fonctions que vous souhaitez suivre. Cela active également automatiquement la gestion des versions du code au fil de vos expériences, afin de capturer des détails ad hoc qui n’ont pas été commités dans Git. Créez une fonction décorée avec @weave.op. Dans l’exemple suivant, la fonction recommend_places_to_visit, encapsulée avec @weave.op, recommande des lieux à visiter dans une ville.
import os
from google import genai
import weave

weave.init(project_name="google-genai")
google_client = genai.Client(api_key=os.getenv("GOOGLE_GENAI_KEY"))


@weave.op()
def recommend_places_to_visit(city: str, model: str = "gemini-1.5-flash"):
    response = google_client.models.generate_content(
        model=model,
        contents="You are a helpful assistant meant to suggest all budget-friendly places to visit in a city",
    )
    return response.text


recommend_places_to_visit("New York")
recommend_places_to_visit("Paris")
recommend_places_to_visit("Kolkata")
dspy_trace.png

Créez un Model pour expérimenter plus facilement

Il est difficile d’organiser une expérimentation lorsqu’il y a de nombreux éléments en jeu. En utilisant la classe Model, vous pouvez capturer et organiser les détails expérimentaux de votre application, comme votre prompt système ou le modèle que vous utilisez. Cela facilite l’organisation et la comparaison des différentes itérations de votre application. En plus de la gestion des versions du code et de la capture des entrées/sorties, les Models capturent des paramètres structurés qui contrôlent le comportement de votre application, vous aidant à trouver les paramètres les plus efficaces. Vous pouvez également utiliser les Weave Models avec serve et les Évaluations. Dans l’exemple suivant, vous pouvez expérimenter avec CityVisitRecommender. Chaque fois que vous modifiez l’un de ces éléments, vous obtenez une nouvelle version de CityVisitRecommender. Cela vous donne un historique versionné de chaque configuration que vous essayez, que vous pouvez ensuite comparer ou évaluer.
import os
from google import genai
import weave

weave.init(project_name="google-genai")
google_client = genai.Client(api_key=os.getenv("GOOGLE_GENAI_KEY"))


class CityVisitRecommender(weave.Model):
    model: str

    @weave.op()
    def predict(self, city: str) -> str:
        response = google_client.models.generate_content(
            model=self.model,
            contents="You are a helpful assistant meant to suggest all budget-friendly places to visit in a city",
        )
        return response.text


city_recommender = CityVisitRecommender(model="gemini-1.5-flash")
print(city_recommender.predict("New York"))
print(city_recommender.predict("San Francisco"))
print(city_recommender.predict("Los Angeles"))