arrow-left

Only this pageAll pages
gitbookPowered by GitBook
1 of 11

BITO

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

External Links

Bito Features

hashtag
Chat

Bito AI chat is the most flexible way to use AI assistance. You can type any technical question to generate the best possible response. Check out these Bito AI Examplesto understand all you can do with Bito.

To use AI Chat, type the question in the chat box, and press 'Enter' to send. You can add a new line in the question with 'CTRL + ENTER'.

Bito AI Chat Input

Depending on the size and complexity of the prompt, Bito AI may take a few seconds to return the response. While you wait, Bito acts funny 😂 and displays a witty message generated via AI as we like to eat our dog food 🐶.

Bito makes it super easy to use the answer generated by AI. You can copy the response to the clipboard or insert it directly into the code editor in the cursor.

You can take the following actions on the Chat output

  1. Regenerate the results by clicking the "Regenerate" button.

  2. Copy the output to the clipboard, insert it into the code editor, or view the diff between the proposed and original code.

  3. Modify the prompt by clicking the "Edit Prompt" button next to the question.

hashtag
Templates

Generating the best possible response is as much science as art. The Bito AI models are built on the same technology as chatGPT handles the science part. Crafting a good prompt is the art part. The Templates in Bito takes the burden off your shoulder in being crafty. You can select a piece of code and use one of the eight prompts, whether you want to check the code for performance or add error handling. Behind-the-scene actor "Bito Prompt Manager" crafts a well-versed prompt that squeezes the best response out of the machine. You can also save your favorite prompts for quick access anytime. Check out .

Templates are accessible:

a. In the Bito panel

b. from the code editor's context menu

c. through the command palette in Visual Studio code.

hashtag
Diff View

Any Shortcut such as "Performance Check" or "Improve Readability" that proposes changes to your existing code automatically opens a "Diff View" between the proposed and actual code. This allows you to review the changes before accepting them into your code. The diff view opens automatically when Bito AI returns the proposed changes. You can also view the diff at any point through the "Diff" action.

hashtag
History

The history of your conversation with Bito AI is stored locally on your machine (we respect the privacy of your data) and is available in the History section in the Bito panel.

Welcome

10X Developer with Bito

Bito's AI helps developers dramatically accelerate their impact. It's a Swiss Army knife of capabilities that can 10x your developer productivity and save you an hour a day, using the same models as ChatGPT!

Bito AI makes it easy to write code, understand syntax, write test cases, explain code, comment on code, check security, and even explain high-level concepts. Trained on billions of lines of code and millions of documents, it's pretty incredible what we can help you do without having to search the web or waste time on tedious stuff.

hashtag
Getting Started with Bito

Bito features are available through the extensions, built to work with Visual Studio Code, JetBrain IDEs, and Chrome web browsers.

If you don't already have Bito installed, you can download it from the respective marketplaces:

More information on installing Bito extensions can be found at .

hashtag
What can you do with Bito?

Bito AI is a general-purpose AI assistance in that developers can ask any technical question, generate code from the natural language prompts, and get feedback on the existing code. Here are some things you can do with Bito AI Knowledge Assistance.

  1. Generate Code: Ask Bito to generate code in any language with the natural language prompt. (e.g., write a Java function to convert a number from one base to another)

  2. Command Syntax: Ask for the syntax of any technical command. (e.g., How to set a global variable for git?")

  3. Test Cases: Generate test cases for the code.

Here is a 2-minute overview of Bito. Learn more about Bito features at , and check out the AI examples at

hashtag
Getting Support

  • Connect with the Bito public community on Slack to interact with the Bito team and other users worldwide.

  • If you need help with anything else, e-mail us at [email protected].

Share a web link to the Question and Answer on Twitter, E-mail, or any other channel.

  • Modify the most recent prompt with the "Redo" action on the chatbox.

  • Custom Prompt Templatesarrow-up-right
    Copy & Insert action at the top
    Templates in Bito Panel. Click Template tab to collapse or expand it
    Select code, right click, and click Bito AI to access shortcuts
    View ->Command Palette -> Type "Bito" to access the templates
    Diff view between proposed and actual code change.
    Diff View action on the proposed code changes
    Chat History in Bito

    Explain Code: Explain the selected code. Ask how this code works or what it does.

  • Comment Method: Generate a comment for the function or method to add to your code.

  • Improve Performance: Ask how you can improve the performance of a given code.

  • Check Security: Ask if the selected code has any known security issues.

  • Learn Technical Concepts: Ask a question about any technical concept (e.g., Explains B+ trees, explain Banker's algorithm)

  • Installing Bito Extensions
    Bito Features
    Bito AI Examples
    Cover

    Install Bito for Visual Studio Code

    Cover

    Install Bito for JetBrain IDEs

    Cover

    Install Bito for Chrome Browser

    Installing Bito Extensions

    It takes less than 2 minutes

    hashtag
    Visual Studio Code

    1. In Visual Studio Code, go to the extension tab and search for Bito.

    1. Install the extension. We recommend you restart the IDE after the installation is complete.

    2. After a successful install, the Bito logo appears in the Visual Studio Code pane.

    1. Click the Bito logo to launch the extension and complete the setup process. You will either need to create a new workspace if you are the first in your company to install Bito or join an existing workspace created by a co-worker. See

    circle-info

    Visual Studio Code Marketplace Link

    hashtag
    JetBrains IDEs

    1. In JetBrain IDEs such as IntelliJ, go to File -> Settings to open the Settings dialog, and click Plugins -> Marketplace tab in the settings dialog. Search for Bito.

    2. Click "Install" to install the Bito extension. We recommend you restart the IDE after the installation is complete.

    3. Bito panel will appear on the right-hand sidebar. Click it to complete the setup process. You will either need to create a new workspace if you are the first in your company to install Bito or join an existing workspace created by a co-worker. See

    circle-info

    The menu to invoke the settings dialog may be different for different IDEs of the JetBrain family. The screenshots highlighted above are for the IntelliJ IDEA. You can access the Bito extension directly from the JetBrain marketplace at .

    hashtag
    Chrome Extension

    Bito's Chrome Extension is the easiest way to try out Bito AI. You can install it quickly with this link on the Google Chrome Extension Store.

    After you install it, Bito AI will appear in the Chrome toolbar. We recommend that you pin it so you can get to it quickly.

    Troubleshooting

    hashtag
    #1 Bito JetBrain Extension doesn't work in Android Studio.

    Bito plugin needs support for the JCEF browser, which is not included in Android Studio due to its default boot runtime setup. You can change the default Boot runtime settings in Android Studio to a version that supports the JCEF browser and get Bito running on Android Studio Given below are the instructions:

    Privacy & Security

    Bito doesn't read or store your code.

    This document explains some of Bito's privacy and security practices. You can read our full Privacy Policy at .

    hashtag
    Bito AI Assistant

    Bito doesn't store any code you give as input to the Bito AI. However, the code snippets you select are sent to our servers for processing.

    Any response generated by the AI Assistance is stored locally on your machine to show the history in Bito UI. You can clear the history anytime you want from the Bito UI.

    Go to Help → Find action
  • Type → “Choose Boot Java Runtime for the IDEarrow-up-right”

  • From the dropdown “New”, select a Boot runtime that supports the JCEF browser.

  • Select "OK" and Restart.

  • Once done, install Bito, and you will have it up and running. Here’s the link to the Loom video showing the whole process: https://www.loom.com/share/4c27a38758da464a93505f86e7a08f29arrow-up-right

    hashtag
    Sub-processor

    Bito uses the following third-party services: Amazon AWS, Anthropic, Clearbit, Github, Google Analytics, Google Cloud, HelpScout, Hubspot, Klaviyo, Microsoft Azure, Mixpanel, OpenAI, SendGrid, SiteGround, Slack, and Substack for infrastructure, support, and functional capabilities.

    hashtag
    Personal Data

    Bito follows industry standard practices for protecting your e-mail and other personal details. Our password-less login process - which requires one-time passcode sent to your e-mail for every login - ensures the complete security of your account.

    If you have any questions about our security and privacy, please email [email protected].

    https://bito.ai/privacy-policy/arrow-up-right
    Team Workspace
    https://marketplace.v sualstudio.com/items?itemName=Bito.bitoarrow-up-right
    Team Workspace
    https://plugins.jetbrains.com/plugin/18289-bitoarrow-up-right
    Settings in IntelliJ IDE
    Bito in IntelliJ right-hand side bar

    Team Workspace

    Bring your team together

    In Bito, team members collaborate by joining a workspace. In most cases, every organization would create one Workspace. Anyone can install Bito, create a workspace for their team, and invite their coworkers to the Workspace. Creating and joining a workspace is a quick process in Bito. It unlocks many benefits, such as co-creating and sharing the knowledge around code, participating in the conversations, and setting the visibility of the content to all or select members in the Workspace.

    circle-info

    While you can create and join many workspaces with the same e-mail address, we recommend you create one Workspace for your organization or division using your work e-mail address. By default, any user with the same domain e-mail will automatically see and be able to join that Workspace when signing up in Bito.

    hashtag
    Creating a Workspace

    1. After you install the Bito extension, click the "Sign up or Sign-in" button on the Bito app page. In the next screen, enter your work e-mail address, and verify through a six-digit code sent to your e-mail address.

    2. Once your e-mail is verified, you will get an option to create a new workspace. If you have already joined or are invited to a workspace, the link to create a new workspace will appear at the bottom of the screen.

    3. Enter the name of the Workspace. You will get the following options at the time of creating the Workspace. You can accept all the default settings or modify the settings as needed.

    hashtag
    Inviting coworkers to the Workspace

    You can use Bito in a single-player mode for all the use cases. However, it works best when your coworkers join the Workspace to collaborate with Bito. There are three ways you can invite your coworkers.

    Option 1 - Allow your work e-mail domain for the Workspace. This setting is turned on by default, and all users with the same e-mail domain as yours will automatically see the Workspace under "Pending Invitations" when signing up in Bito. You can manage this setting after you create the Workspace through the "Settings" page in your Bito account.

    circle-info

    You may still need to notify your coworkers about Bito and share Bito workspace URL. We don't send e-mails to your coworkers unless you invite them to the Workspace.

    Option 2 - Invite your coworkers via e-mail when you create your Workspace or later from your workspace setting.

    Option 3- Share a web link specific to your Workspace via the channel of your choice: e-mail, Slack, or Teams. The link is automatically created and shown when creating a workspace or on the workspace settings page.

    hashtag
    Joining an existing Workspace

    After you install the Bito extension, sign up with your work e-mail. If your e-mail domain is allowed for the Workspace, or your coworker invited you, you will see the Workspace listed during the sign-up flow under the "Pending Invitation" list. Joining your company or team Workspace takes less than a minute.

    Alternatively, you can join the Workspace through the Workspace link shared by your coworker.

    Custom Prompt Templates

    hashtag
    Introduction

    🤯 Sick of typing out long prompts every time? 😩 Bito's got your back! Now, create custom prompt templates for all your frequently used prompts and save yourself some stress.

    With "Create Prompt Template," you can create and save custom prompt templates for use in your IDE. By defining a custom template with a template name and prompt, Bito can execute the prompt as is on the selected code. With this feature, you can save time and streamline your workflow by quickly executing frequently used prompts without inputting them manually each time.

  • An option to allow your e-mail domain so other users with the same e-mail domain will automatically see the Workspace and can join during sign-up. This option is valid only if you sign-up with your work domain.

  • Option to invite your coworkers via e-mail.

  • Option to copy and share the Workspace URL via e-mail, Slack, Teams, etc.

  • Once you complete the Workspace setup, Bito will be ready to use.

  • The custom prompt templates feature and standard prompt templates are located below the chatbox.
    Bito Custom Prompt Template

    hashtag
    Create a Custom Prompt Template

    1. Open Bito Plugin in your IDE

    2. Below the chatbox, click on "New Template".

    Create Prompt Template Feature
    1. Enter the "Template Name" and "Prompt" for your custom template. You can use {{%code%}} as a macro to insert the selected code in your prompt. If this macro is not used, Bito will insert the selected code at the end of your prompt.

    Enter template name and Prompt
    1. Click on "Create Template" to save your new custom template. All custom templates will appear below the chatbox alongside standard templates. You can create up to four custom templates.

    My custom templates

    hashtag

    circle-info

    Tips: Creating a good AI prompt is an iterative process. We recommend you iterate various options and check the output to ensure your satisfaction. Here are some helpful hints:

    1. Add instruction in the template to enclose any code output in triple backticks (```). This will ensure that the code is formatted in a code block in the output.

    2. Write clear and specific instructions. If you want output in a specific format, ask to structure the output in that format.

    3. Specify the steps to complete the task. A clearly defined set of steps allows the model to think and work out a solution before generating the output.

    4. Custom templates require selecting code in IDE. Bito replaces all instances of the {{%code%}} in the template with the selected code. If no {{%code%}} macro is found, the selected code is appended to the end of the code.

    hashtag
    Example 1: OWASP Security Issue

    Your task is to analyze the code given below: {{%code%}}. The code needs to be analyzed for the top 10 security vulnerabilities defined by OWASP. If no vulnerability is found, the output should be "No Issue Found". If any issue is found, identify all instances of the code. The output should include a list of all issues and the fixed code in the following format. The code should be enclosed in the three backticks.

    Issues: List of Issues

    Code: Fixed code enclosed in three back ticks

    hashtag
    Edit or Remove a Custom Template

    You can edit or remove the templates anytime by clicking on the three dots over the template that you want to edit or remove. Note that you can edit or remove the standard templates provided by Bito.

    Edit/Remove my custom templates

    hashtag
    Using a Custom Template

    1. Select any code that you want to execute the prompt.

    2. Run the Custom Template by clicking it in the Bito Templates panel.

    3. Bito starts generating output in the

    Here’s an example of how to execute prompts using your custom templates.

    Let’s say you want to create a custom template to add a comment describing the logic behind the code. Here's how you can do it:

    1. Below the chatbox, click on "New template".

    2. Enter a name for your custom template, e.g. "Add Comment"

    3. In the "Prompt" field, enter the following: "Please add a comment describing the logic behind the code. " and then click on "Create Template" to save your new custom template

    1. Now, select the code you want to add a comment to and click on the "Add Comment" template.

    1. Bito adds the selected code at the end of the prompt and executes it via Bito AI.

    Keyboard Shortcuts

    Bito UI in Visual Studio Code and JetBrains IDEs is entirely keyboard accessible. You can navigate Bito UI with standard keyboard actions such as TAB, SHIFT+TAB, ENTER, and ESC keys. Additionally, you can use the following shortcuts for quick operations.

    hashtag
    General

    Command
    Shortcuts

    hashtag
    Question & Answers

    The following keyboard shortcuts work after the Q/A block is selected.

    Command
    Keyboard Shortcut

    hashtag
    Change Default Keyboard Shortcuts

    Bito has carefully selected the keyboard shortcuts after thorough testing. However, it's possible that Bito selected key combination may conflict with IDE or other extensions shortcut. You can change the Bito default shortcut keys to avoid such conflicts.

    hashtag
    Visual Studio Code Editor

    1. To Open the Keyboards Shortcuts editor in VS Code, navigate to the menu under File > Preferences > Keyboard Shortcuts. (Code > Preferences > Keyboard Shortcuts on macOS)

    1. Search for default available commands, keybindings, or Bito extension-specific commands in VSCode keyboard shortcut editor.

    1. Finding a conflict in Key binding → Search for the key and take necessary action, e.g., Remove or Reset.

    1. Add a new key binding or map the existing Bito extension command. Provide the necessary information (Command ID) to add the new key binding.

    hashtag
    JetBrain

    JetBrain Document:

    1. File > settings > keymaps > configure keymaps

    1. Bito extension shortcuts can be overwritten by going into the File > Settings > Keymaps > configure keymaps > to the action you want to assign. It will also overwrite the Bito shortcut if there are conflicts.

    2. Bito extension keyboard shortcuts can be changed from the IntelliJ settings. File > Settings > Keymaps > configure keymaps > plugins > Bito > action you want to change by right click.

    3. Bito extension Keyboard shortcuts can be deleted from the IntelliJ settings. File > Settings > Keymaps > configure keymaps > plugins > Bito > action you want to delete by right click.

    CTRL + D

    Expand/Collapse the code block in the question.

    WINDOWS: CTRL + ⬆️ / ⬇️ MAC: CTRL + SHIFT+ ⬆️ / ⬇️

    Regenerate the answer

    CTRL + L

    Modify the prompt for the selected Q&A. Bito copies the prompt in the chatbox that you can modify as needed.

    CTRL + U

    Open Bito Panel: Toggle Bito Panel on and off in the JetBrains IDE. In the Visual Studio Code, the shortcut opens the Bito panel if not already opened.

    SHIFT + CTRL + O

    Puts cursor in the chatbox when Bito panel is in focus.

    SPACEBAR (Or start typing your question directly)

    Execute the chat command

    ENTER

    Add a new line in the chatbox

    CTRL + ENTER or SHIFT + ENTER

    Modify the most recently executed prompt. This copies the last prompt in the chatbox for any edits.

    CTRL + M

    Expands and Collapse the "Shortcut" panel

    WINDOWS: CTRL + ⬆️ / ⬇️ MAC: CTRL + SHIFT+ ⬆️ / ⬇️

    Navigate between the Questions/Answers block.

    Note: You must select the Q/A container with TAB/SHIFT+TAB.

    ⬆️ / ⬇️

    Copy the answer to the clipboard.

    CTRL + C

    Insert the answer in the code editor

    CTRL + I

    https://www.jetbrains.com/help/idea/configuring-keyboard-and-mouse-shortcuts.htmlarrow-up-right

    Toggle the diff view (when Diff View is applicable)

    What's New

    Building the best AI assistant for the developers

    hashtag
    IDE V1.0.136 & CLI V3.1 - 18th May 2023

    New Features

    Language support for AI Output: We're excited to announce that Bito now supports multiple languages in IDEs, allowing you to converse in your preferred language. With this update, you can easily switch to your desired language within the chat interface.

    Supported languages: English, Bulgarian, Chinese (Simplified), Chinese (Traditional), Czech, French, German, Hungarian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Turkish

    How to Access:

    1. Click on the settings icon in the plugin interface's top right corner.

    2. Select your preferred language from the list of supported languages.

    3. Save your choice; Bito will now communicate with you in the selected language.

    Note: All responses from Bito will appear in the selected language, regardless of the input language.

    Enjoy the convenience of conversing with Bito in your native language and take your coding experience to a new level!

    Custom Templates in IDE Context Menu: Your requests are our priority! We are pleased to introduce running "Custom Prompt Templates" to the IDE context menu. Building on the success of our previous release, where we introduced custom templates in the Bito plugin, we've taken it a step further. Now, you can access your personalized templates directly from the context menu in your IDE from "Run Custom Prompt Template"

    Clicking "Run Custom Prompt Template" opens up a list of your templates in the Command Pallet or other secondary menu, depending on your IDE.

    Introducing Context in Bito CLI: Bito CLI can now remember previous conversations, allowing for a more seamless and contextual experience. With the addition of context file support, you can now pass a context file using the -c command to preserve the context and history of your conversation. Watch our helpful tutorial to learn more about utilizing context files in Bito CLI.

    Say goodbye to repetitive context-setting and dive straight into productive and context-aware discussions with Bito CLI! 💬💡

    Improvement and Bug fixes

    Bito Version 1.0.135 and IntelliJ IDEA 2021.1.x Compatibility: We recently discovered an issue where Bito version 1.0.135 was not compatible with specific older versions of IntelliJ IDEA. We want to assure you that we have addressed this compatibility concern, and Bito is now fully compatible with IntelliJ IDEA.

    Automatic CLI updates: Say goodbye to manual updates! We're thrilled to introduce the CLI Auto-update feature. With this, Bito CLI will automatically check for updates whenever you open it. If a new version is available, the CLI will seamlessly update itself, ensuring you're always equipped with the latest enhancements, bug fixes, and features. Stay ahead of the curve without the hassle of manual updates!

    hashtag
    IDE V1.0.135 - 1st May 2023

    New Features

    Introducing Custom Prompt Template: Bito allows you to create and save custom prompt templates for IDEs. Define a template name and prompt, and Bito will execute it on the selected code. You can add up to 4 custom templates and edit or remove them as needed. Learn more about .

    Improvement and Bug fixes

    1. Resolved OTP verification issue: Unfortunately, some customers experienced an issue last week where they could not complete OTP verification during login to the Bito Plugin. We are happy to report that this issue has been resolved in the latest release.

    2. Fix for Context Menu and Shortcuts on Ubuntu 2023.1 JetBrains: Fixed an issue where the context menu and shortcuts were not functioning correctly on Ubuntu 2023.1 JetBrains, causing the selection of code and options like explain code not to work as intended. This has now been resolved.

    hashtag
    IDE V1.0.134 & CLI 3.0 - 14th April 2023

    hashtag
    New Features

    1. CLI "My Prompt": We're excited to announce the launch of Bito CLI My Prompt, our first step in empowering developers to automate tasks with AI. My Prompt makes creating accurate and concise prompts for your development tasks easy, reusing them with simple Bito commands. It allows you to automate various coding tasks, such as generating commit messages, test data, or code documentation. The possibilities are limitless. Two new command line options support My Prompt feature:

    -p option: To specify a file containing the prompt or instructions for the AI models to operate.

    -f option: To specify the file to perform the operation/instructions described in the prompt file.

    Here are two examples for you to see My Prompt in action:

    Create Git Commit Messages and Markdown Documentation with Ease using Bito CLI My Prompt

    Generate test data using Bito CLI My Prompt:

    1. Generate Unit Test Shortcut (Waitlist): With this new shortcut button, developers can now easily generate unit tests for their code with just a click. This new feature is designed to streamline the testing process and improve code quality, making it easier for developers to deliver high-quality work.

      Be the first to try our exciting new feature! You can now add yourself to the waitlist by clicking on the icon.

    Improvement and Bug fixes:

    1. Improved Explain Code Shortcut: Previously, the Explain Code shortcut button provided a summary of the code logic, but with our latest update, it now also provides a detailed, step-by-step explanation of the code. We have merged two previous shortcuts into one. Now, developers can easily understand the code logic and its components.

    2. We've fixed an issue where the CTRL+C command was not working on Mac OS. Now, you can easily copy and paste text without any problems.

    3. We've resolved an issue with context menus and shortcuts not working on Ubuntu 2023.1 JetBrains. This fix ensures that all shortcuts and context menus work as expected, making it easier for developers to navigate the IDE.

    hashtag
    IDE V1.0.133 - 30th March 2023

    hashtag
    New Features

    1. Chat Session History: In the last release, we added . This release lets you view past chat sessions on the chat interface. The history feature is located at the top right corner of the chat interface. With this, users can easily revisit their past conversations, making it easier to pick up where they left off. Additionally, users can share their past chat sessions with colleagues, making it easier to collaborate and share knowledge. The new chat session History adds another layer of convenience and functionality to the AI assistant.

    1. GPT-4: We are thrilled to announce that we have integrated GPT-4, the industry's latest and most powerful generation model. With GPT-4 integration, Bito's AI assistant is now even more powerful and capable of providing detailed and accurate responses to various programming-related queries. Developers can ask complex questions and receive natural language responses that are both helpful and informative.

    2. Long Code Input: Bito fully leverages GPT-4's increased token limit. With this, users could input and receive feedback on larger blocks of code, making it easier to troubleshoot and optimize code for performance. The exact size of the code depends on many factors, including how long the current chat session is. Bito can take 2-3x longer code input than the input length supported by the previous version of Bito.

    circle-info

    Note that we use a combination of GPT-4 and GPT Turbo 3.5 models. We route long, complex prompts to GPT-4 and short prompts to Turbo 3.5 models. This helps us balance the quality of output that Bito generates and the cost of servicing users. If you ask Bito about the model in use, most likely, it will say GPT-3, as this simple prompt is routed to Turbo 3.5.

    We may offer a paid version of Bito in the future that always uses GPT-4 or other advanced models. However, our internal testing has shown that the output quality for simple and short prompts is not very different between 3.5 and 4. The full benefit of GPT-4 is realized in complex, long prompts or when prompts are related to niche facts that models are likely to hallucinate. We have not seen "hallucination" as a major issue for the development-related use cases that Bito is targeting.

    Improvement and Bug fixes:

    1. Stop Generation in Chat Interface: We have added a Stop Generation button to our chat interface, allowing users to stop the response generation process anytime. This feature will be especially helpful in cases where users have asked a question incorrectly or want to modify their question before receiving a response.

    1. Diff View Bug Fix – We have resolved a bug in our VS Code Extension v1.0.132. The bug affected one of our key features, Diff view, which provides a side-by-side view of changes proposed by Bito AI in the IDE. The bug was causing multiple diff views to open simultaneously, which could be confusing. This has been fixed now.

    hashtag
    IDE V1.0.132 & CLI V2.0 - 16th March 2023

    hashtag
    New Features

    1. Context-Aware Chat: Our latest update is the most critical one since our launch. Many of our users had requested an interactive chat experience similar to ChatGPT, which was unavailable in earlier versions. With this new update, you can now ask follow-up questions to refine the output, which considers the chat history for context. You can initiate a chat session with a custom request, use Bito Shortcuts like Performance Check, and follow up with additional prompts. To give you an idea of how it works, here is an example of an interactive chat session.

    1. Instant Results: With the latest release of Bito, you can now experience instant results that appear within seconds. In previous versions, users had to wait patiently while being entertained by amusing messages, but we understand that this could become frustrating over time. This new update implements streaming output, allowing you to access the information you need with minimal delay immediately.

    Note: Context-Aware Chat and Instant Results are available in the latest version of and .

    Improvements & Bug Fixes

    1. Dynamic Font Size & Family: This feature in Bito adjusts the interface's font size and family dynamically based on the font size you have set up in your Integrated Development Environment (IDE) settings. The goal of this feature is to make the chat interface more accessible and comfortable to use for all users, regardless of their font preferences, visual acuity, or screen size.

    2. Configure Keyboard Shortcuts: This feature allows users to customize the default keyboard shortcuts in Bito to avoid conflicts with other IDE-specific shortcuts they may be using. By configuring keyboard shortcuts, users can streamline their workflow and increase their productivity by accessing Bito functions more quickly and efficiently. The instructions for configuring keyboard shortcuts in Bito are in this .

    hashtag
    IDE V1.0.130 - 24nd Feb 2023

    hashtag
    New Features

    1. Diff View: Bito Shortcuts added many quick operations on your existing code, such as checking performance, improving code readability, or security check. The Diff View in IDE now gives a side-by-side view of the changes proposed by Bito AI. Bito automatically creates a temp file with the proposed code changes and displays diff view with your current code file. IDE's built-in "diff review feature" lets you review and accept/reject the changes. We love that Bito AI can improve your code in many ways, but we want you to be in control while incorporating changes to your code repository. Diff view is built just for that.

    1. Keyboard Accessibility: We have added keyboard accessibility to all UI elements in Bito. You can navigate with Tab and Shift + Tab. Standard keys such as Enter, ESC, and Up/Down arrows work. You can also move between Q&A with the Up and Down arrow keys once the Q/A container is focused.

    2. Keyboard Shortcuts: Keyboard shortcuts for the most commonly used commands.

      • SHIFT+ CTRL + O: Brings Bito panel in focus. With this shortcut, you can toggle Bito Panel on/off in the JetBrains extensions. In VS Code, the shortcut will open the Bito panel (if not already opened). You can use shortcuts of other tabs (e.g. CTRL + SHIFT + E for Explorer) to close Bito.

    1. Edit prompt lets you modify a previously executed prompt. You can edit any prompt with the "Edit Prompt" action next to the question.

    To modify the most recent prompt, click the "Redo" icon in the chatbox.

    Improvements & Bug Fixes

    1. The Bito icon in the JetBrains IDE is optimized, so the extension panel doesn't take up space when not in use.

    hashtag
    V1.0.129 - 31st Jan 2023

    hashtag
    Improvements & Bug Fixes

    1. Code Block formatting and syntax highlighting make it easy to distinguish code from the text content in the chat output. When you use Shortcuts to transform any existing code, the original code is collapsed by default in the question box, thus giving more space for the answer, and the output code is formatted and syntax highlighted.

    1. Several UI improvements to make Bito look and work great in your IDE. We have reduced padding around the questions and answers blocks so you see more content. The scrollbars are optimized to take up less space and reduce visual clutter.

    hashtag
    V1.0.128 - 18th Jan 2023

    hashtag
    New Features

    1. Shortcuts give your existing code power of Bito AI. Select any code snippet in your code editor, and use Bito Shortcuts to run security, performance, or style check. Know how the code works, what it does, or generate comments. You can clean code, improve readability or automatically add exception handling. Behind the scene, we automatically generate the best possible prompt for the best AI output, so you don't have to spend time with prompts.

    hashtag
    Improvements & Bug Fixes

    1. Fixed crash when using Bito JetBrain extension with PyCharm.

    2. Fixed Git dependency issue in the Visual Studio Code extension.

    hashtag
    V1.0.127 - 13th Jan 2023

    hashtag
    New Features

    1. Additional pre-defined prompts to improve the quality and readability of the code.

      • Improve Readability - Makes code more readable by organizing the better

      • Clean Code - Remove debugging, commented code, and log-related code.

    hashtag
    Improvement and Bug Fixes

    1. Improved UX for smaller screen resolution.

    hashtag
    V1.0.125 - 26th Dec 2022

    hashtag
    New Features

    1. Pre-defined prompts for various checks on your existing code. Select your code and choose one of the below options:

      • Explain Steps: Explain "How the code works?".

      • Explain Code: Explain "What does this code do?"

    hashtag
    Improvements & Bug Fixes

    1. Keyboard support for the AI Chatbox. Send the request with 'Enter' and add a new line to the chat with 'CTRL+Enter.'

  • We've fixed an issue on Linux version 2023.1 IntelliJ where users could not type anything in the text area of our chat interface. This fix ensures that users can input text as expected.

  • SPACEBAR: Puts cursor in the chatbox when Bito panel is in focus.

  • ENTER: Execute the chat command.

  • CTRL+ ENTER or SHIFT + ENTER: Adds a new line in the chatbox.

  • The following shortcuts work on the Q&A when a Q&A is selected.

    1. CTRL + C: Copy the answer to the clipboard.

    2. CTRL + I: Insert the answer in the code editor.

    3. CTRL + D: Toggle the diff view (when Diff View is applicable)

    4. CTRL + UP/DOWN (Mac: CTRL + SHIFT + UP/DOWN): Expand and collapse the code block where applicable.

    5. CTRL + L : Regnerate the answer.

    6. CTRL + U: Modify the prompt for the selected Q&A. Bito copies the prompt in the chatbox that you can modify as needed.

  • CTRL + M: Modify the most recently executed prompt.

  • CTRL + UP/DOWN (CTRL + SHIFT + UP/DOWN on Mac): Expands and collapses the "Shortcut" panel in Bito.

  • Sharing: You can easily share a single question and answer to any channel. Every question and answer has a web permalink that you can share on Twitter and E-mail directly. Copy and paste the link into Slack, Teams, Jira, or Confluence.

  • Regenerate the results of any prompt with a single click.

  • Make Robust - Add exception/error handling to the code.

  • Add Steps - Add explanation steps to the block of codes.

  • Generate Comment: Generate a comment for the selected code.

  • Performance Check: Check the selected code for performance and gives pointers to fix the performance. It also rewrites the code with the suggested performance fixes,

  • Security Check: Check the selected code for security issues and gives pointers to fix them. It also rewrites the code with the suggested security fixes,

  • Style Check: Check the selected code for the style issues and gives suggestions to fix them. It also rewrites the code with the suggested style fixes.

  • Command Pallet support in Visual Studio Code. All Bito commands are accessible in the Visual Studio Command Pallet.

  • Insert output from Bito AI into your code file with a single click. This is great for inserting any generated code in your code editor. It inserts the code wherever your cursor is, or if you want to replace the existing code, select the code and insert the new code.

  • Custom Prompt Template
    Context-Aware chat
    Bito CLIarrow-up-right
    Chrome Extensionarrow-up-right
    link
    Language Settings
    Language Options
    Execute Custom Prompt Template with Context Menu
    My custom template
    Access Chat Session History
    History of Chat Sessions
    Diff view for the code changes proposed by Bito
    Edit any prompt.
    Edit the last prompt

    Bito AI Examples

    Supercharging development with AI

    Bito AI Assistance can help with generating new content or help with your existing code.

    Click on each use case for an example instruction and response.

    • Generate Code

    • Command Syntax

    hashtag
    Generate Code

    Instruction

    circle-info

    Implement a simple rest API in Go.

    Response

    circle-check

    hashtag
    Command Syntax

    Instruction

    circle-info

    How to rebase a branch in git?

    Response

    circle-check
    1. Checkout the branch you want to rebase:

    $ git checkout

    hashtag
    Learn Technical Concepts

    Instruction

    circle-info

    Can you explain the B+ tree with a code example?

    Response

    circle-check

    A B+ tree is a self-balancing tree data structure used in databases to store and retrieve data efficiently. It is a variation of the B-tree and is designed to minimize the number of disk accesses required for insertion, deletion, and retrieval operations. B+ trees are characterized by the number of keys stored per node, the order of the nodes, and the number of children per node.

    For example, a B+ tree of order 5 would have 5 keys per node and 5 children per node. When a node becomes full, it will split into two nodes, each containing half of the keys and half of the children. This means that all the nodes at the same level will have the same number of keys, making retrieval operations more efficient.

    hashtag
    Test Case

    Instruction

    circle-info

    Generate test cases for the following method.

    Response

    circle-check

    Test Case 1: Input: newLabelArray = [ 'Apple', 'Banana', 'Mango', 'Apple' ] oldLabelArray = [ 'Banana', 'Mango', 'Orange' ] Expected Output: ['Apple:2', 'Orange:-1']

    Test Case 2: Input: newLabelArray = [ 'Apple', 'Banana', 'Apple', 'Orange' ] oldLabelArray = [ 'Banana', 'Mango', 'Orange' ] Expected Output: ['Apple:2', 'Mango:-1']

    hashtag
    Explain this Code

    Instruction

    circle-info

    What does this code do?

    Response

    circle-check

    This code takes two arrays, newLabelArray and oldLabelArray, and generates a new array that contains the difference between the two arrays. It does this by first creating three empty arrays, new_, old_, and merged_. It then iterates through the newLabelArray and adds each label to the new_ array, as well as the merged_ array. It then iterates through the oldLabelArray and does the same for the old_ array, but also subtracts it from the merged_ array. Finally, it iterates through the merged_ array and checks for any values that are not equal to 0 and adds them to the final array. It then returns this final array.

    hashtag
    Comment Method

    Instruction

    circle-info

    Generate a comment for this method, explaining the parameters and output

    Response

    circle-check

    /* This method takes two arrays, newLabelArray and oldLabelArray. It uses the elements of both arrays to generate a merged array, merged_, where it counts the occurrences of each element in both arrays. It then creates a third array, final, containing the elements of merged_ where the difference is not 0. The output is the final array. */

    hashtag
    Improve Performance

    Instruction

    circle-info

    How can I improve the performance of this code?

    Response

    circle-check
    1. Use ES6 syntax to simplify the code.

    2. Use a hashmap instead of looping through the arrays.

    Instruction

    circle-info

    Rewrite this code with performance improvements?

    Response

    circle-check

    hashtag
    Check for Security

    Instruction

    circle-info

    Find potential security issues in this code

    Response

    circle-check
    1. A lack of input validation: the user-supplied search term is not being validated to ensure it is safe to use in a database query. This could leave the system open to SQL injection attacks.

    2. A lack of output encoding: the results from the database are not being encoded before they are printed. This could leave the system open to cross-site scripting attacks.

    Instruction

    circle-info

    Rewrite this code with fix to potential security issues

    Response

    circle-check

    hashtag
    Find Style Issues

    Instruction

    circle-info

    Identify potential issues that EsLint would find in this code

    Response

    circle-check

    //ESLint would find the following issues:

    • Missing semicolons (potential syntax errors)

    Bito AI Demo
    Slackjoin.slack.comchevron-right
    Chrome Web Storechrome.google.comchevron-right

    Rebase your branch against the upstream branch:

    $ git rebase upstream/

    1. Resolve any conflicts that arise.

    2. Once all conflicts are resolved, do a git status to verify that all files have been updated correctly.

    3. Finally, push the rebased branch to the remote repository:

    $ git push origin --force

    Here is an example in Python

    Use a single loop to build the final array instead of two loops.
  • Use array methods instead of for-each loops.

  • Use optimized data structures like Set and Map.

  • Missing spacing after 'forEach' statements
  • Unused variables (e.g. 'old_')

  • Missing spacing between operators (e.g. '++new_[lbl]')

  • Learn technical concepts
    Generate test cases
    Explain code
    Comment method
    Improve code performance
    Check security
    Find style issues
    package main
    import ( 
    "encoding/json" "fmt" "net/http" )
    type user struct { Name string json:"name" Age int json:"age" }
    func main() 
    {http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 
    	// Create user 
    	u := user{ Name: "John Doe", Age: 25, }
    	// Encode user
    	uj, err := json.Marshal(u)
    	if err != nil {
    		fmt.Fprintf(w, err.Error())
    	}
    	// Return user
    	w.Header().Set("Content-Type", "application/json")
    	w.WriteHeader(http.StatusOK)
    	fmt.Fprintf(w, "%s\n", uj)
    })
    http.ListenAndServe(":3000", nil)
    }
    genrateLabelDiffArray(newLabelArray,oldLabelArray=[])
      {
        let new_ =[],old_=[],merged_=[];
        newLabelArray.forEach((lbl)=>{
          if(new_[lbl] === undefined){ new_[lbl] =0;merged_[lbl]=0; }
          ++new_[lbl];
          ++merged_[lbl];
        });
        
        oldLabelArray.forEach((lbl)=>{
          if(old_[lbl] === undefined){ old_[lbl] =0; }
          if(merged_[lbl] === undefined){ merged_[lbl] =0; }
    
          ++old_[lbl];
          --merged_[lbl]
        });
        let final = [];
    
        merged_.forEach((value,key)=>{
          if(value!=0){ 
          //  final[key.toString()] = value;
          final.push(key+":"+value);
           }
        })
        
          return final;
      }
    genrateLabelDiffArray(newLabelArray,oldLabelArray=[])
      {
        let new_ =[],old_=[],merged_=[];
        newLabelArray.forEach((lbl)=>{
          if(new_[lbl] === undefined){ new_[lbl] =0;merged_[lbl]=0; }
          ++new_[lbl];
          ++merged_[lbl];
        });
        
        oldLabelArray.forEach((lbl)=>{
          if(old_[lbl] === undefined){ old_[lbl] =0; }
          if(merged_[lbl] === undefined){ merged_[lbl] =0; }
    
          ++old_[lbl];
          --merged_[lbl]
        });
        let final = [];
    
        merged_.forEach((value,key)=>{
          if(value!=0){ 
          //  final[key.toString()] = value;
          final.push(key+":"+value);
           }
        })
        
          return final;
      }
    genrateLabelDiffArray(newLabelArray,oldLabelArray=[])
      {
        let new_ =[],old_=[],merged_=[];
        newLabelArray.forEach((lbl)=>{
          if(new_[lbl] === undefined){ new_[lbl] =0;merged_[lbl]=0; }
          ++new_[lbl];
          ++merged_[lbl];
        });
        
        oldLabelArray.forEach((lbl)=>{
          if(old_[lbl] === undefined){ old_[lbl] =0; }
          if(merged_[lbl] === undefined){ merged_[lbl] =0; }
    
          ++old_[lbl];
          --merged_[lbl]
        });
        let final = [];
    
        merged_.forEach((value,key)=>{
          if(value!=0){ 
          //  final[key.toString()] = value;
          final.push(key+":"+value);
           }
        })
        
          return final;
      }
    genrateLabelDiffArray(newLabelArray,oldLabelArray=[])
      {
        let new_ =[],old_=[],merged_=[];
        newLabelArray.forEach((lbl)=>{
          if(new_[lbl] === undefined){ new_[lbl] =0;merged_[lbl]=0; }
          ++new_[lbl];
          ++merged_[lbl];
        });
        
        oldLabelArray.forEach((lbl)=>{
          if(old_[lbl] === undefined){ old_[lbl] =0; }
          if(merged_[lbl] === undefined){ merged_[lbl] =0; }
    
          ++old_[lbl];
          --merged_[lbl]
        });
        let final = [];
    
        merged_.forEach((value,key)=>{
          if(value!=0){ 
          //  final[key.toString()] = value;
          final.push(key+":"+value);
           }
        })
        
          return final;
      }
    genrateLabelDiffArray(newLabelArray,oldLabelArray=[])
      {
        let new_ =[],old_=[],merged_=[];
        newLabelArray.forEach((lbl)=>{
          if(new_[lbl] === undefined){ new_[lbl] =0;merged_[lbl]=0; }
          ++new_[lbl];
          ++merged_[lbl];
        });
        
        oldLabelArray.forEach((lbl)=>{
          if(old_[lbl] === undefined){ old_[lbl] =0; }
          if(merged_[lbl] === undefined){ merged_[lbl] =0; }
    
          ++old_[lbl];
          --merged_[lbl]
        });
        let final = [];
    
        merged_.forEach((value,key)=>{
          if(value!=0){ 
          //  final[key.toString()] = value;
          final.push(key+":"+value);
           }
        })
        
          return final;
      }
    // Rewritten Code
    function genrateLabelDiffArray(newLabelArray, oldLabelArray = []) {
      let new_ = {},
        old_ = {},
        merged_ = {},
        final = [];
    
      newLabelArray.forEach((lbl) => {
        new_[lbl] = new_[lbl] ? new_[lbl] + 1 : 1;
        merged_[lbl] = merged_[lbl] ? merged_[lbl] + 1 : 1;
      });
    
      oldLabelArray.forEach((lbl) => {
        old_[lbl] = old_[lbl] ? old_[lbl] + 1 : 1;
        merged_[lbl] = merged_[lbl] ? merged_[lbl] - 1 : -1;
      });
    
      Object.entries(merged_).forEach(([key, value]) => {
        if (value !== 0) {
          final.push(key + ":" + value);
        }
      });
      
      return final;
    }
    import database
    search_term = input("Enter a search term: ")
    query = "SELECT * FROM users WHERE name = '" + search_term + "'"
    results = database.query(query)
    print(results)
    import database
    search_term = input("Enter a search term: ")
    query = "SELECT * FROM users WHERE name = '" + search_term + "'"
    results = database.query(query)
    print(results)
    import database
    
    # Get the user-supplied search term
    search_term = input("Enter a search term: ")
    
    # Use the user-supplied search term to query the database
    query = "SELECT * FROM users WHERE name = %s"
    results = database.query(query, (search_term,))
    
    # Print the results
    print(results)
    genrateLabelDiffArray(newLabelArray,oldLabelArray=[])
      {
        let new_ =[],old_=[],merged_=[];
        newLabelArray.forEach((lbl)=>{
          if(new_[lbl] === undefined){ new_[lbl] =0;merged_[lbl]=0; }
          ++new_[lbl];
          ++merged_[lbl];
        });
        
        oldLabelArray.forEach((lbl)=>{
          if(old_[lbl] === undefined){ old_[lbl] =0; }
          if(merged_[lbl] === undefined){ merged_[lbl] =0; }
    
          ++old_[lbl];
          --merged_[lbl]
        });
        let final = [];
    
        merged_.forEach((value,key)=>{
          if(value!=0){ 
          //  final[key.toString()] = value;
          final.push(key+":"+value);
           }
        })
        
          return final;
      }
    class Node:
        def __init__(self, order):
            self.order = order
            self.keys = []
            self.children = [None] * (order + 1)
    
    class BPlusTree:
        def __init__(self, order):
            self.root = Node(order)
     
        def insert(self, key):
            if not self.root.keys:
                self.root.keys.append(key)
            else:
                pass # traverse the tree and insert the key
     
        def delete(self, key):
            pass # traverse the tree and delete the key
     
        def search(self, key):
            pass # traverse the tree and search for the key
     
    # Create a B+ tree of order 5
    bplus_tree = BPlusTree(5)
     
    # Insert a key
    bplus_tree.insert(10)
     
    # Delete a key
    bplus_tree.delete(10)
    
    # Search for a key
    bplus_tree.search(10)
    Logo
    Logo