-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Added Streaming.ipynb notebook for JavaScript #1012
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Aarchi-07
commented
Oct 29, 2025
- Converted the original Python notebook into JavaScript.
- Added proper structure and formatting for better readability.
- Verified code compatibility and tested basic functionality.
Summary of ChangesHello @Aarchi-07, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces a new quickstart guide for the Gemini API, specifically demonstrating streaming capabilities in JavaScript. It serves as a direct conversion from an existing Python notebook, ensuring developers can easily understand and implement streaming responses using the JavaScript SDK. The notebook includes examples for basic streaming and asynchronous handling, along with setup instructions for the API key. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request adds a JavaScript quickstart for streaming, which is a great addition. I have a few general suggestions:
- The file is named
Streaming Quickstart.txt. To be consistent with other files in thequickstarts-jsdirectory, it should probably be a JavaScript file, for exampleStreaming.jsorStreaming_Quickstart.js. - The repository's style guide mentions that new notebooks should be added to the corresponding
README.mdfile. This new quickstart is missing fromquickstarts-js/README.md.
I've also added a couple of specific comments to improve the code quality by declaring variables properly and fixing a potential bug where undefined could be printed to the console.
| }); | ||
|
|
||
| for await (const chunk of response) { | ||
| console.log(chunk.text); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If a streamed chunk does not have a text property, console.log(chunk.text) will print undefined to the console. To make the code more robust, you should check for the existence of chunk.text before logging it. A short-circuit conditional is a concise way to do this, and this pattern is used correctly in the asynchronous example later in the file.
chunk.text && console.log(chunk.text);
| module = await import("https://esm.sh/@google/genai@1.4.0"); | ||
| GoogleGenAI = module.GoogleGenAI; | ||
| ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY }); | ||
|
|
||
| MODEL_ID = "gemini-2.5-flash" // ["gemini-2.5-flash-lite", "gemini-2.5-flash", "gemini-2.5-pro"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In JavaScript, it's a best practice to declare all variables with const, let, or var to define their scope and prevent them from becoming implicit global variables. This improves code predictability and maintainability.
I suggest using const for these variables since they are not reassigned. I've also used object destructuring to import GoogleGenAI, which is a more modern and concise syntax.
const module = await import("https://esm.sh/@google/genai@1.4.0");
const { GoogleGenAI } = module;
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const MODEL_ID = "gemini-2.5-flash" // ["gemini-2.5-flash-lite", "gemini-2.5-flash", "gemini-2.5-pro"]
| response = await ai.models.generateContentStream({ | ||
| model: MODEL_ID, | ||
| contents: "Tell me a story in 300 words.", | ||
| }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.