FLUX 3 and Gemini 3.7 Flash are now live on CometAPI →

Blog

Blog CometAPI

Jedno API. Każdy wiodący model AI.

Aktualizacje modeli, przewodniki API, testy porównawcze i praktyczne spostrzeżenia dla szybszego budowania z CometAPI.

Czym jest Gemini Embedding 2?
New

Czym jest Gemini Embedding 2?

Gemini Embedding 2 to pierwszy natywnie multimodalny model osadzeń Google, który odwzorowuje tekst, obrazy, audio, wideo i pliki PDF w pojedynczą, 3,072-wymiarową semantyczną przestrzeń wektorową (z konfigurowalnymi rozmiarami wyjściowymi). Wprowadza Matryoshka Representation Learning, aby zapewnić zagnieżdżone / skrócone osadzenia, ulepszoną wydajność wielojęzyczną (100+ języków) oraz zoptymalizowane ustawienia dla osadzeń specyficznych dla zadań (np. task:search, task:code).

A
Anna
Poniżej znajdziesz zwięzły przewodnik, jak zacząć korzystać z Gemini API z modelem Pro. Zastąp nazwę modelu rzeczywistym identyfikatorem widocznym w Google AI Studio (np. gemini-1.5-pro; jeśli dostępny, gemini-3.1-pro).

1) Uzyskaj dostęp
- Google AI Studio (Gemini API): utwórz klucz API i zarządzaj modelami.
- Alternatywnie Vertex AI na Google Cloud: przydatne, gdy potrzebujesz zarządzania w projekcie GCP, sieci prywatnej, IAM itp.

2) Zainstaluj SDK
- Python: pip install google-generativeai
- Node.js: npm i @google/generative-ai

3) Skonfiguruj uwierzytelnianie
- Ustaw klucz jako zmienną środowiskową, np. GEMINI_API_KEY.

4) Podstawowe wywołanie – Python
    import os
    import google.generativeai as genai

    genai.configure(api_key=os.environ["GEMINI_API_KEY"])
    MODEL = "your-model-id"  # np. "gemini-1.5-pro" lub odpowiedni identyfikator

    model = genai.GenerativeModel(
        model_name=MODEL,
        system_instruction="Jesteś pomocnym, zwięzłym asystentem."
    )

    # Prosta generacja tekstu
    resp = model.generate_content(
        "Wyjaśnij różnicę między HTTP a HTTPS w 3 zdaniach.",
        generation_config={
            "temperature": 0.7,
            "top_p": 0.95,
            "max_output_tokens": 512
        }
    )
    print(resp.text)

    # Strumieniowanie odpowiedzi
    stream = model.generate_content("Napisz krótki wiersz o jesieni.", stream=True)
    for chunk in stream:
        print(chunk.text or "", end="")

    # Tryb czatu (z historią)
    chat = model.start_chat(history=[])
    r = chat.send_message("Cześć! Podaj 3 pomysły na prezent dla programisty.")
    print(r.text)

5) Podstawowe wywołanie – Node.js
    import { GoogleGenerativeAI } from "@google/generative-ai";

    const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
    const MODEL = "your-model-id"; // np. "gemini-1.5-pro"

    const model = genAI.getGenerativeModel({
      model: MODEL,
      systemInstruction: "Jesteś pomocnym, zwięzłym asystentem."
    });

    // Prosta generacja
    const result = await model.generateContent({
      contents: [{ role: "user", parts: [{ text: "Podaj 5 nazw dla aplikacji do nauki języków." }] }],
      generationConfig: { temperature: 0.7, topP: 0.95, maxOutputTokens: 512 }
    });
    console.log(result.response.text());

    // Strumieniowanie
    const stream = await model.generateContentStream("Stwórz haiku o wiośnie.");
    for await (const chunk of stream.stream) {
      process.stdout.write(chunk.text());
    }

    // Tryb czatu
    const chat = model.startChat({ history: [] });
    const r = await chat.sendMessage("Pomóż mi zaplanować prosty plan nauki Pythona na 2 tygodnie.");
    console.log(r.response.text());

6) Multimodalne wejście (obraz + tekst)
- Python:
    # inline obraz jako bajty base64
    image_bytes = ...  # wczytaj obraz i zakoduj do base64
    resp = model.generate_content([
        "Co jest na obrazku?",
        { "mime_type": "image/png", "data": image_bytes }
    ])
    print(resp.text)

- Node.js:
    const base64Image = "..."; // base64 bez prefiksu data:
    const r = await model.generateContent([
      { text: "Opisz ten obraz w 2 zdaniach." },
      { inlineData: { mimeType: "image/png", data: base64Image } }
    ]);
    console.log(r.response.text());

7) Strukturalne wyjście JSON
- Wymuś JSON, definiując MIME i schemat:
- Python:
    resp = model.generate_content(
        "Zwróć obiekt z polami name (string) i priority (integer) opisujący zadanie: 'Naprawa bugów'.",
        generation_config={
            "response_mime_type": "application/json",
            "response_schema": {
                "type": "object",
                "properties": {
                    "name": { "type": "string" },
                    "priority": { "type": "integer" }
                },
                "required": ["name", "priority"]
            }
        }
    )
    print(resp.text)  # prawidłowy JSON

- Node.js:
    const r = await model.generateContent({
      contents: [{ role: "user", parts: [{ text: "Podaj JSON z name i priority dla zadania 'Code review'." }] }],
      generationConfig: {
        responseMimeType: "application/json",
        responseSchema: {
          type: "object",
          properties: {
            name: { type: "string" },
            priority: { type: "integer" }
          },
          required: ["name", "priority"]
        }
      }
    });
    console.log(r.response.text());

8) REST (cURL), jeśli nie używasz SDK
    curl -s -H "Content-Type: application/json" \
      -X POST "https://generativelanguage.googleapis.com/v1beta/models/YOUR_MODEL_ID:generateContent?key=$GEMINI_API_KEY" \
      -d '{
        "contents": [{ "role": "user", "parts": [{ "text": "Wypisz 3 zalety TDD." }]}],
        "generationConfig": { "temperature": 0.6, "maxOutputTokens": 256 }
      }'

9) Dobre praktyki
- Zawsze przechowuj klucz API po stronie serwera; nie umieszczaj go w aplikacji front-end.
- Dobierz temperaturę/topP do potrzeb: niższe wartości = bardziej deterministyczne odpowiedzi.
- Używaj system_instruction, by stabilizować rolę/styl asystenta.
- Sprawdzaj dostępne identyfikatory modeli i limity w Google AI Studio; w kodzie podstaw właściwy YOUR_MODEL_ID (np. gemini-3.1-pro, jeśli dostępny).
- Do długich przepływów używaj strumieniowania i paginacji wyników, a dla integracji w GCP rozważ Vertex AI (uprawnienia IAM, region, prywatność).
Guide

Poniżej znajdziesz zwięzły przewodnik, jak zacząć korzystać z Gemini API z modelem Pro. Zastąp nazwę modelu rzeczywistym identyfikatorem widocznym w Google AI Studio (np. gemini-1.5-pro; jeśli dostępny, gemini-3.1-pro). 1) Uzyskaj dostęp - Google AI Studio (Gemini API): utwórz klucz API i zarządzaj modelami. - Alternatywnie Vertex AI na Google Cloud: przydatne, gdy potrzebujesz zarządzania w projekcie GCP, sieci prywatnej, IAM itp. 2) Zainstaluj SDK - Python: pip install google-generativeai - Node.js: npm i @google/generative-ai 3) Skonfiguruj uwierzytelnianie - Ustaw klucz jako zmienną środowiskową, np. GEMINI_API_KEY. 4) Podstawowe wywołanie – Python import os import google.generativeai as genai genai.configure(api_key=os.environ["GEMINI_API_KEY"]) MODEL = "your-model-id" # np. "gemini-1.5-pro" lub odpowiedni identyfikator model = genai.GenerativeModel( model_name=MODEL, system_instruction="Jesteś pomocnym, zwięzłym asystentem." ) # Prosta generacja tekstu resp = model.generate_content( "Wyjaśnij różnicę między HTTP a HTTPS w 3 zdaniach.", generation_config={ "temperature": 0.7, "top_p": 0.95, "max_output_tokens": 512 } ) print(resp.text) # Strumieniowanie odpowiedzi stream = model.generate_content("Napisz krótki wiersz o jesieni.", stream=True) for chunk in stream: print(chunk.text or "", end="") # Tryb czatu (z historią) chat = model.start_chat(history=[]) r = chat.send_message("Cześć! Podaj 3 pomysły na prezent dla programisty.") print(r.text) 5) Podstawowe wywołanie – Node.js import { GoogleGenerativeAI } from "@google/generative-ai"; const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY); const MODEL = "your-model-id"; // np. "gemini-1.5-pro" const model = genAI.getGenerativeModel({ model: MODEL, systemInstruction: "Jesteś pomocnym, zwięzłym asystentem." }); // Prosta generacja const result = await model.generateContent({ contents: [{ role: "user", parts: [{ text: "Podaj 5 nazw dla aplikacji do nauki języków." }] }], generationConfig: { temperature: 0.7, topP: 0.95, maxOutputTokens: 512 } }); console.log(result.response.text()); // Strumieniowanie const stream = await model.generateContentStream("Stwórz haiku o wiośnie."); for await (const chunk of stream.stream) { process.stdout.write(chunk.text()); } // Tryb czatu const chat = model.startChat({ history: [] }); const r = await chat.sendMessage("Pomóż mi zaplanować prosty plan nauki Pythona na 2 tygodnie."); console.log(r.response.text()); 6) Multimodalne wejście (obraz + tekst) - Python: # inline obraz jako bajty base64 image_bytes = ... # wczytaj obraz i zakoduj do base64 resp = model.generate_content([ "Co jest na obrazku?", { "mime_type": "image/png", "data": image_bytes } ]) print(resp.text) - Node.js: const base64Image = "..."; // base64 bez prefiksu data: const r = await model.generateContent([ { text: "Opisz ten obraz w 2 zdaniach." }, { inlineData: { mimeType: "image/png", data: base64Image } } ]); console.log(r.response.text()); 7) Strukturalne wyjście JSON - Wymuś JSON, definiując MIME i schemat: - Python: resp = model.generate_content( "Zwróć obiekt z polami name (string) i priority (integer) opisujący zadanie: 'Naprawa bugów'.", generation_config={ "response_mime_type": "application/json", "response_schema": { "type": "object", "properties": { "name": { "type": "string" }, "priority": { "type": "integer" } }, "required": ["name", "priority"] } } ) print(resp.text) # prawidłowy JSON - Node.js: const r = await model.generateContent({ contents: [{ role: "user", parts: [{ text: "Podaj JSON z name i priority dla zadania 'Code review'." }] }], generationConfig: { responseMimeType: "application/json", responseSchema: { type: "object", properties: { name: { type: "string" }, priority: { type: "integer" } }, required: ["name", "priority"] } } }); console.log(r.response.text()); 8) REST (cURL), jeśli nie używasz SDK curl -s -H "Content-Type: application/json" \ -X POST "https://generativelanguage.googleapis.com/v1beta/models/YOUR_MODEL_ID:generateContent?key=$GEMINI_API_KEY" \ -d '{ "contents": [{ "role": "user", "parts": [{ "text": "Wypisz 3 zalety TDD." }]}], "generationConfig": { "temperature": 0.6, "maxOutputTokens": 256 } }' 9) Dobre praktyki - Zawsze przechowuj klucz API po stronie serwera; nie umieszczaj go w aplikacji front-end. - Dobierz temperaturę/topP do potrzeb: niższe wartości = bardziej deterministyczne odpowiedzi. - Używaj system_instruction, by stabilizować rolę/styl asystenta. - Sprawdzaj dostępne identyfikatory modeli i limity w Google AI Studio; w kodzie podstaw właściwy YOUR_MODEL_ID (np. gemini-3.1-pro, jeśli dostępny). - Do długich przepływów używaj strumieniowania i paginacji wyników, a dla integracji w GCP rozważ Vertex AI (uprawnienia IAM, region, prywatność).

Praktyczny, zorientowany na kod przewodnik po Gemini 3.1 Pro — czym jest, jak go wywoływać (w tym przez CometAPI), jego ustawienia multimodalności i poziomu „myślenia”, wywoływanie funkcji/korzystanie z narzędzi, wskazówki dotyczące vibe-codingu oraz integracje z GitHub Copilot, VS Code, Gemini CLI i Google Antigravity. Gemini 3.1 Pro przesuwa granicę dużych modeli multimodalnych, oferując podejście skoncentrowane na deweloperach: większe okna kontekstu, konfigurowalne tryby „myślenia”, ulepszone wywoływanie narzędzi i funkcji oraz jawne wsparcie dla agentowych przepływów pracy.

A
Anna
Gemini API: jakie rozmiary plików i metody wprowadzania są obecnie obsługiwane?
Technology

Gemini API: jakie rozmiary plików i metody wprowadzania są obecnie obsługiwane?

12 stycznia 2026 r. Google opublikowało aktualizację deweloperską dotyczącą Gemini API, która zmienia sposób przekazywania plików do modelu oraz to, jak duże te pliki mogą być. Krótko mówiąc: Gemini teraz pobiera pliki bezpośrednio z zewnętrznych linków i z magazynu w chmurze (więc nie zawsze musisz je przesyłać), a limit rozmiaru plików inline został znacznie podniesiony. Te aktualizacje usuwają utrudnienia w realnych aplikacjach, które już przechowują multimedia lub dokumenty w zasobnikach chmurowych, i sprawiają, że krótkie cykle prototypowania oraz procesy produkcyjne są szybsze i tańsze.

A
Anna