Wielu z Was zapewne zastanawia się, jak można uwolnić potęgę dzisiejszej sztucznej inteligencji i zintegrować ją z własnymi projektami i produktami. Najpopularniejsza forma dostępu do LLMów, czyli popularne okienko chatu jest tylko czubkiem góry lodowej. Tutaj pokażę, jak można zintegrować współczesne multimodalne modele z własnym systemem poprzez interfejs programistyczny API. W tym temacie zaprezentuję przegląd możliwości takich modeli, obejmie on przetwarzanie tekstów, obrazów, a nawet dźwięku i filmów.
Zakładam, że mamy już konto Google i jesteśmy zalogowani w aistudio.google.com. Trzeba mieć podpięty też system płatności, choć można korzystać też z wersji trial - Google dość hojnie rozdaje okresy próbne i kredyty na start. Zaczynamy od utworzenia projektu i klucza - musimy mieć go w API Keys:
Nasze koszty z kolei mamy dostępne w billing, i musimy je tam bacznie obserwować. Każdy model kosztuje - nie będę już tego powtarzać, ale łatwo jest zużyć wiele tokenów.
Po więcej informacji odsyłam do pomocy Google, tu się chcę skupić na prezentacji, co w ogóle jest możliwe z dzisiejszym AI.
Hello World
Tutaj zdecydowałem się użyć node.js wraz z gotową paczką generative-ai od Google. Ktoś może mógłby woleć Pythona, ale ja preferuję składnię kojarzącą się z Javą i C++. Zacznijmy od package.json:
Kod: JSON
W oparciu o nie będę uruchamiać kolejne demka. Zakładam podstawową znajomość node.js - projekt instalujemy przez npm install. Zresztą... same LLMy też mogą w tym pomóc.
Hello World - tekstowy prompt
Jako "Hello world" uruchomię najprostszy model LLM z prostym promptem. W użytej bibliotece sprowadza się to do podania klucza API, wybrania modelu i wysłania prompta:
https://github.com/openshwprojects/GoogleAIDemos/blob/main/helloWorld.js
Rezultat:
Hello World - listowanie modeli
Drugą podstawową rzeczą jest sprawdzenie dostępnych modeli przez API. Pozwoli nam to uniknąć zgadywania "na ślepo", z czego można skorzystać.
https://github.com/openshwprojects/GoogleAIDemos/blob/main/listModels.js
Rezultat:
- models/gemini-2.5-flash | Gemini 2.5 Flash
- models/gemini-2.5-pro | Gemini 2.5 Pro
- models/gemini-2.0-flash | Gemini 2.0 Flash
- models/gemini-2.0-flash-001 | Gemini 2.0 Flash 001
- models/gemini-2.0-flash-lite-001 | Gemini 2.0 Flash-Lite 001
- models/gemini-2.0-flash-lite | Gemini 2.0 Flash-Lite
- models/gemini-2.5-flash-preview-tts | Gemini 2.5 Flash Preview TTS
- models/gemini-2.5-pro-preview-tts | Gemini 2.5 Pro Preview TTS
- models/gemma-3-1b-it | Gemma 3 1B
- models/gemma-3-4b-it | Gemma 3 4B
- models/gemma-3-12b-it | Gemma 3 12B
- models/gemma-3-27b-it | Gemma 3 27B
- models/gemma-3n-e4b-it | Gemma 3n E4B
- models/gemma-3n-e2b-it | Gemma 3n E2B
- models/gemini-flash-latest | Gemini Flash Latest
- models/gemini-flash-lite-latest | Gemini Flash-Lite Latest
- models/gemini-pro-latest | Gemini Pro Latest
- models/gemini-2.5-flash-lite | Gemini 2.5 Flash-Lite
- models/gemini-2.5-flash-image | Nano Banana
- models/gemini-2.5-flash-lite-preview-09-2025 | Gemini 2.5 Flash-Lite Preview Sep 2025
- models/gemini-3-pro-preview | Gemini 3 Pro Preview
- models/gemini-3-flash-preview | Gemini 3 Flash Preview
- models/gemini-3.1-pro-preview | Gemini 3.1 Pro Preview
- models/gemini-3.1-pro-preview-customtools | Gemini 3.1 Pro Preview Custom Tools
- models/gemini-3.1-flash-lite-preview | Gemini 3.1 Flash Lite Preview
- models/gemini-3-pro-image-preview | Nano Banana Pro
- models/nano-banana-pro-preview | Nano Banana Pro
- models/gemini-3.1-flash-image-preview | Nano Banana 2
- models/gemini-robotics-er-1.5-preview | Gemini Robotics-ER 1.5 Preview
- models/gemini-2.5-computer-use-preview-10-2025 | Gemini 2.5 Computer Use Preview 10-2025
- models/deep-research-pro-preview-12-2025 | Deep Research Pro Preview (Dec-12-2025)
- models/gemini-embedding-001 | Gemini Embedding 001
- models/gemini-embedding-2-preview | Gemini Embedding 2 Preview
- models/aqa | Model that performs Attributed Question Answering.
- models/imagen-4.0-generate-001 | Imagen 4
- models/imagen-4.0-ultra-generate-001 | Imagen 4 Ultra
- models/imagen-4.0-fast-generate-001 | Imagen 4 Fast
- models/veo-2.0-generate-001 | Veo 2
- models/veo-3.0-generate-001 | Veo 3
- models/veo-3.0-fast-generate-001 | Veo 3 fast
- models/veo-3.1-generate-preview | Veo 3.1
- models/veo-3.1-fast-generate-preview | Veo 3.1 fast
- models/gemini-2.5-flash-native-audio-latest | Gemini 2.5 Flash Native Audio Latest
- models/gemini-2.5-flash-native-audio-preview-09-2025 | Gemini 2.5 Flash Native Audio Preview 09-2025
- models/gemini-2.5-flash-native-audio-preview-12-2025 | Gemini 2.5 Flash Native Audio Preview 12-2025
Opisywanie obrazu (prompt + tekst)
Dzisiejsze modele są jednak multimodalne, i potrafią też opisywać obrazy. Takie obrazy załącza się tutaj kodowane przez Base64. Na próbę przygotowałem przykładowy obraz:
Kod zyskuje kilka dodatkowych linijek, by móc przetworzyć obraz. Prompt dalej też zależy od nas:
https://github.com/openshwprojects/GoogleAIDemos/blob/main/describeImage.js
Rezultat:
Można zmienić dowolnie prompt. Przykładowo dla polecenia:
List living beings visible on photo
Otrzymujemy odpowiedź respektującą to, o co prosimy:
Based on the photo, here are the living beings visible:
1. **People** (numerous individuals seated at tables and walking in the background)
2. **Dog** (sitting in the foreground on the right)
3. **Plants/Flowers** (many potted plants with colorful flowers lining the street and decorating the cafe exterior)
Generowanie nowych obrazów
Sztuczna inteligencja od Google potrafi też tworzyć obrazy, służą do tego jednak wybrane modele. Przykładowo słynny Nano Banana, wraz ze swoimi różnymi wersjami. Flash nam obrazu nie utworzy. Wewnętrznie nazywa się on gemini-2.5-flash-image. Oprócz wyboru modelu mamy tu tę samą opcję co na stronie od Google, czyli wybór trybów odpowiedzi - czy tylko obraz, czy tekst i obraz.
https://github.com/openshwprojects/GoogleAIDemos/blob/main/createImage.js
Utworzony obraz:
Pasuje raczej do mojego opisu z promptu, prawda?
Generowanie filmów
W podobny sposób można tworzyć filmy, służy do tego interfejs Veo. Nie udało mi się uruchomić go w tej samej bibliotece co poprzednio, więc do tego przykładu użyłem pokrewnego zasobu genai:
Kod: JSON
Generowanie video troszkę trwa, a z API uzyskujemy link do sprawdzania stanu pracy. Dopiero potem można je zapisać.
https://github.com/openshwprojects/GoogleAIDemos/blob/main/createVideo.js
Rezultat:
Zamiana tekstu na mowę
Google oferuje też zamianę tekstu pisanego na naturalnie brzmiącą mowę. Dostępne jest kilka różnych głosów, tutaj użyję głosu Kore. Jednym z potencjalnych problemów jest brak nagłówka WAV w zwróconych danych, ale go można łatwo dodać.
https://github.com/openshwprojects/GoogleAIDemos/blob/main/createSpeech.js
Rezultat:
https://github.com/openshwprojects/GoogleAIDemos/blob/main/speech.wav
Edytowanie zdjęć
Nano Banana Pro zasłynął też z rewelacyjnych zdolności edytowania zdjęć - można zmieniać obiekty, osoby, a nawet dodawać całkiem nowe rzeczy. Te funkcje też dostępne są przez API. Zdjęcie, tak jak wcześniej, wysyłane jest w formacie base64 i w tym samym otrzymujemy odpowiedź.
https://github.com/openshwprojects/GoogleAIDemos/blob/main/editImage.js
Zdjęcie wejściowe:
Prompt:
Edit this image: replace the dog with a cat. Keep everything else exactly the same.Rezultat:
Grounding, czyli źródła - wyszukiwarka
Współczesne modele AI wciąż mogą halucynować, ale na szczęście można udostępnić im różne narzędzia, takie jak wyszukiwarka, aby mogły udzielać bardziej aktualnych i wiarygodnych odpowiedzi. Zamiast polegać wyłącznie na wiedzy z treningu, może odwoływać się do wcześniej przygotowanych przez nas danych lub do tych znalezionych w Internecie. Dzięki temu zmniejsza się ryzyko błędów i tzw. halucynacji. Wyszukiwarkę podpina się poprzez obiekt "tools":
Kod: Javascript
Rezultat (skrócony):
Opis filmu
Kolejnym wartościowym zastosowaniem AI może być opisywanie krótkich klipów filmowych. Na próbę wygenerowałem przykładowy filmik:
Dodałem go do zapytania AI poprzez funkcję upload. Pełen kod:
https://github.com/openshwprojects/GoogleAIDemos/blob/main/describe_video.js
Opis filmiku od AI:
Uploading video to Gemini...
Uploaded file as: files/bd2tskdurfs3
Waiting for video to be processed...
.
Video processed! Asking Gemini to describe it...
--- Gemini's Description ---
The video opens with a stunning low-angle shot, focusing on an **orange tabby cat** walking slowly and deliberately directly towards the viewer down a narrow, ancient-looking cobblestone street.
**The Cat:**
* It is a medium-haired ginger cat, with distinct tabby stripes and markings across its body.
* Its fur is beautifully backlit by the strong, golden light, giving it a radiant halo, especially visible around its fluffy tail, which is held high and slightly curled.
* The cat has bright, observant greenish-yellow eyes and prominent whiskers.
* It walks with a calm, steady gait, its head held level, occasionally glancing subtly to its left or right but primarily looking straight ahead.
**The Environment:**
* The street is paved with irregular, dark cobblestones, with hints of green moss or grass growing between them, suggesting
age.
* Old stone or brick buildings, somewhat blurred due to the shallow depth of field, line both sides of the street, receding
into the background. These buildings are largely in shadow, further emphasizing the bright light down the center of the street.
* The overall setting gives the impression of a quaint European alleyway or historic town street.
**The Lighting:**
* The scene is bathed in a warm, intense golden light, strongly indicating either sunrise or sunset (golden hour).
* The light source is directly behind the approaching cat, creating a dramatic backlighting effect that makes the cat's silhouette pop and its fur glow.
* The cobblestones directly in front of the camera are also illuminated by this warm glow, highlighting their texture.
**Camera Movement:**
* The camera maintains a very low perspective, almost at ground level, effectively tracking the cat's movement.
* It performs a smooth, continuous forward tracking shot, keeping the cat centered in the frame as it steadily approaches.
* The shot maintains a consistent shallow depth of field, keeping the cat sharp while the background is softly blurred.
**Action:**
* The cat continues its measured walk towards the camera, gradually filling more of the frame.
* At approximately 0:00:07, the cat pauses briefly, looking directly at the camera, then slightly turns its head to its left (viewer's right) before the video concludes.
The entire scene is serene and picturesque, enhanced by the gentle background music (a soft piano melody).
Całość powtórzyłem na filmie z dziedziny elektroniki:
Opis:
--- Gemini's Description ---
In this close-up video, a person is shown using soldering tools to remove a small component from a green circuit board. The circuit board is covered in numerous tiny golden squares and green lines, indicating complex circuitry. A dark, liquid substance, likely flux, is spread around the component being worked on.
At 0:03, a soldering gun is introduced into the frame from the top right, aiming at the component. The person uses the soldering gun to apply heat to the component.
At 0:07, a pair of tweezers is used to gently tap and move the component, ensuring the solder melts evenly.
At 0:13, the tweezers are momentarily removed, and the soldering gun continues to heat the component.
From 0:19 to 0:21, the soldering gun is moved around the component, ensuring all sides are heated.
At 0:28, the soldering gun is briefly moved away, revealing the component still in place.
At 0:38, the soldering gun is back in position, and a pair of tweezers re-enters the frame, now positioned to the left of the
component.
From 0:42 to 0:45, the tweezers are used to nudge the component from its left side, testing the fluidity of the solder.
From 0:52 to 1:29, the tweezers are continuously used to gently push and wiggle the component, slowly detaching it as the heat from the soldering gun melts the solder. The component rocks back and forth, indicating it's becoming loose.
At 1:30, the component appears fully detached from one side, and the person continues to heat and manipulate it with the tweezers to fully free it.
At 1:38, the component is successfully removed from the circuit board, leaving behind an empty space and the dark liquid flux. The soldering gun is then removed from the frame.
Swoją drogą, te opisy są dość niezłe...
Przykładowy chat
Oczywiście można też zrobić łatwo namiastkę klasycznego chatu, takiego jaki stał się popularny wraz z wejściem ChatGPT. Prosta rozmowa z asystentem. Tu warto jedynie zwrócić uwagę, że przy tworzeniu chatu przez AI można zdefiniować prompt systemowy - on określa zachowanie asystenta:
Kod: Javascript
https://github.com/openshwprojects/GoogleAIDemos/blob/main/chat.js
Najprostszy chat nie wspiera dekodowania pogrubień, bloków code, itd, ale reszta zachowania jest zgodna z tym co znamy z oficjalnych produktów:
Własne narzędzia dla AI
Współczesna sztuczna inteligencja potrafi również skutecznie posługiwać się narzędziami. Używany przez nas interfejs ma do tego dedykowane rozwiązanie, gdzie my definiujemy zbiór tools, a model potem z nich wedle własnego uznania korzysta. Dla przykładu zrobiłem symulowany kontroler świateł w domu:
Kod: JSON
Do tego dałem odpowiedni prompt informujący o roli korytarza. Pelen kod:
https://github.com/openshwprojects/GoogleAIDemos/blob/main/homeControl.js
Rezultat:
Jak widać AI potrafi zrozumieć kontekst sytuacyjny i przykładowo zapala światło w korytarzu gdy idę do garażu, mimo iż nic o tym korytarzu nie napisałem.
Podsumowanie
Tak wyglądają możliwości współczesnych modeli AI ogólnodostępnych przez API. Wszystko to można dowolnie integrować ze swoimi projektami, choć trzeba być świadomym cen usług (tokenów), gdyż w przypadku nierestrykcyjnego użycia można szybko nabić sobie duże koszty.
Prezentacje w tym temacie bazowałem na języku Javascript z NodeJS, choć równie dobrze można łączyć się z poziomu Pythona czy tam dowolnego innego języka. Podobnie tutaj opierałem się tylko na modelach od Google, choć dostępne są różne alternatywy - przykładowo od OpenAI czy Anthropic.
W razie problemów i tak pomoże samo AI - przerzucenie czy nawet rekonstrukcja tak prostych przykładów nie jest trudna dla współczesnych modeli, ten temat raczej stanowi prezentacje co jest możliwe, a nie jak należy to robić z poziomu kodu.
Bez wątpienia dzisiejsze systemy sztucznej inteligencji potrafią poprawnie przetwarzać tekst i obrazy, a również jak widać radzą sobie też z dźwiękiem i filmami.
Czy korzystacie ze sztucznej inteligencji poprzez API w swoich projektach, a jeśli tak, to do czego?
Fajne? Ranking DIY Pomogłem? Kup mi kawę.