base on The leading open-source AI copilot for JetBrains. Connect to any model in any environment, and customize your coding experience in any way you like. <a name="readme-top"></a>
<br />
<div align="center">
<a href="https://github.com/carlrobertoh/ProxyAI">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/src/main/resources/icons/proxyRounded_dark.svg">
<img alt="ProxyAI Logo" src="/src/main/resources/icons/proxyRounded.svg">
</picture>
</a>
<h1 style="margin: 0;" align="center">ProxyAI</h1>
<p style="width: 640px">
The leading open-source AI copilot for <a target="_blank" href="https://plugins.jetbrains.com/plugin/21056-proxy-ai">JetBrains</a>. Connect to any model in any environment, and customize your coding experience in any way you like.
</p>
</div>
[![Downloads][downloads-shield]][plugin-repo]
[![Rating][rating-shield]][plugin-repo]
[![Discord][discord-shield]][invite-link]
[![Version][version-shield]][plugin-repo]
<!-- TABLE OF CONTENTS -->
<details>
<summary>Table of Contents</summary>
<ol>
<li><a href="#about-the-project">About The Project</a></li>
<li><a href="#core-features">Core Features</a></li>
<li><a href="#running-locally">Running Locally</a></li>
<li><a href="#privacy">Privacy</a></li>
<li><a href="#feedback">Feedback</a></li>
<li><a href="#license">License</a></li>
</ol>
</details>

## About The Project
ProxyAI is an AI-powered code assistant designed to help you with various programming activities. It is a great alternative to GitHub Copilot, AI Assistant, Codiumate, or any other extension on the JetBrains marketplace.
We equip you with the latest models, advanced tools, and on-premise solutions that are designed to significantly enhance your developer experience.
Access top-tier language models from OpenAI, Anthropic, Azure, Mistral, and others, or opt for a self-hosted model for a full offline experience.
## Core Features
ProxyAI offers a wide range of features to enhance your development experience:
### Chat
- **Auto Apply:** Stream AI-suggested code changes directly into your editor. Preview modifications in diff view and approve or reject them with a single click.
- **Use images:** Chat with your images. Upload manually or let ProxyAI auto-detect your screenshots.
- **Reference your files and folders:** Quickly access and reference your project files and folders for context-aware coding assistance.
- **Reference web docs:** Quickly reference web docs in your chat session, such as API guides, library manuals, and more.
- **Reference git history:** Quickly reference commit logs and changes in your chat session
- **Search the web:** Connect your favourite LLM to the web. ProxyAI will search for the most relevant information to answer your questions.
- **Customize your assistant:** Choose between multiple different personas for your specific needs, whether you're looking to learn, write or proofread.
### Code
- **Next edits:** Get multi-line edits based on your recent activity as you type.
- **Autocomplete your code:** Receive single-line or whole-function autocomplete suggestions as you type.
- **Edit code in natural language:** Highlight the code you want to modify, describe the desired changes, and watch ProxyAI work its magic.
- **Get name suggestions:** Get context-aware naming suggestions for methods, variables, and more.
- **Generate commit messages:** Generate concise and descriptive commit messages based on the changes made in your codebase.
For a full list of features and detailed descriptions, visit our [official documentation](https://docs.tryproxy.io/features).
## Running locally
**Linux or macOS**
```shell
git clone https://github.com/carlrobertoh/ProxyAI.git
cd ProxyAI
git submodule update
./gradlew runIde
```
**Windows ARM64**
```shell
./gradlew runIde -Penv=win-arm64
```
**Tailing logs**
```shell
tail -f build/idea-sandbox/system/log/idea.log
```
## Privacy
**Your data stays yours.** ProxyAI **does not** collect or store any kind of sensitive information.
However, with users' consent, we do collect anonymous usage data, which we use to understand how users interact with the extension, including the most-used features and preferred providers.
## Feedback
Your input helps us grow. Reach out through:
- [Issue Tracker](https://github.com/carlrobertoh/ProxyAI/issues)
- [Discord](https://discord.gg/8dTGGrwcnR)
- [Email](mailto:
[email protected])
## License
Apache 2.0 © [Carl-Robert Linnupuu][portfolio]
If you found this project interesting, kindly rate it on the marketplace and don't forget to give it a star. Thanks again!
<p align="right">(<a href="#readme-top">back to top</a>)</p>
<!-- MARKDOWN LINKS & IMAGES -->
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
[downloads-shield]: https://img.shields.io/jetbrains/plugin/d/21056-proxy-ai
[discord-shield]: https://img.shields.io/discord/1118629761049182238?style=flat&logo=discord&label=Discord
[version-shield]: https://img.shields.io/jetbrains/plugin/v/21056-proxy-ai?label=version
[rating-shield]: https://img.shields.io/jetbrains/plugin/r/rating/21056-proxy-ai
[marketplace-img]: https://github.com/carlrobertoh/CodeGPT-docs/blob/main/images/marketplace.png?raw=true
[plugin-repo]: https://plugins.jetbrains.com/plugin/21056-proxy-ai
[invite-link]: https://discord.gg/8dTGGrwcnR
[open-issues]: https://github.com/carlrobertoh/ProxyAI/issues
[api-key-url]: https://platform.openai.com/account/api-keys
[portfolio]: https://carlrobert.ee
", Assign "at most 3 tags" to the expected json: {"id":"7789","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"