Skip to content

Commit

Permalink
doc:Friendlier README document
Browse files Browse the repository at this point in the history
  • Loading branch information
pepo-ec committed Sep 15, 2024
1 parent aab2c57 commit fd335b8
Showing 1 changed file with 88 additions and 69 deletions.
157 changes: 88 additions & 69 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,103 +1,122 @@
# Intelligence Bridge
# Vim Intelligence Bridge

Un plugin de Vim que crea un puente entre tu editor y procesos de inteligencia externos, permitiendo procesar texto seleccionado usando scripts personalizados.
## Descripción
Vim Intelligence Bridge es un plugin para Vim que integra capacidades de inteligencia artificial en tu flujo de trabajo de desarrollo (extendible a cualquier otro ámbito). Diseñado para trabajar con Ollama localmente (prioriza la privacidad), también ofrece soporte para la API de Groq, mejorando la productividad y la experiencia de codificación.

## Instalación
## Características
- Integración seamless con Vim
- Utiliza Ollama para procesamiento de lenguaje natural local y privado
- Soporte opcional para la API de Groq para procesamiento en la nube
- Mejora la productividad en tareas de codificación
- Personalizable para diferentes lenguajes de programación
- Prioriza la privacidad y el rendimiento con procesamiento local

## Requisitos
- Vim 8.0+
- Python 3.6+
- Ollama instalado localmente (recomendado)
- Conexión a Internet solo si se usa la API de Groq (opcional)

### Usando [vim-plug](https://github.com/junegunn/vim-plug)
## Instalación

Añade esto a tu `~/.vimrc`:
### Usando un gestor de plugins (recomendado)
Si usas [vim-plug](https://github.com/junegunn/vim-plug), agrega esto a tu archivo de configuración de Vim (`.vimrc`):

```vim
Plug 'pepo-ec/vim-intelligence-bridge'
```

## Configuración
Luego, ejecuta `:PlugInstall` en Vim.

### Nombres de modelos, etc.
### Instalación manual
Clona el repositorio en tu directorio de plugins de Vim:

Para configurar los nombres de los modelos es necesario hacerlo en el archivo **$BASE_INSTALL/config.env**

```
GROQ_MODEL=llama-3.1-70b-versatile
OLLAMA_MODEL=yi-coder
```bash
git clone https://github.com/pepo-ec/vim-intelligence-bridge.git ~/.vim/pack/plugins/start/vim-intelligence-bridge
```

### APIs, secretos, etc.
## Configuración
1. Crea un archivo `.env` en el directorio `~/.vim/plugged/vim-intelligence-bridge/` para las claves API (si usas Groq):

Para configurar la información sensible como las llaves de APIs se debe modificar el archivo **$BASE_INSTALL/.env**
```
API_GROQ=tu_api_key_aqui
```

```
API_GROQ=01234567890123456789012345678901234567890123456789012345
```
2. Crea un archivo `config.env` en el mismo directorio para las configuraciones no secretas:

Se provee el archivo env.example que puede ser renombrado y luego correctamente configurado:
```
OLLAMA_MODEL=llama3.1
GROQ_MODEL=llama-3.1-70b-versatile
```

```bash
cp env.example .env
```
3. Ajusta los valores en `config.env` según tus preferencias.

## Uso
- Comando principal: `:IntelligenceBridge`
- Atajo de teclado predeterminado: `<leader>ib`

1. Usando [Vim](https://www.vim.org/) en modo _visual_ seleccionar el texto que va a generar el contexto.
2. Presionar la tecla _"Leader"_ seguido de _ib_ (en mi caso: **,ib**)
3. Se pedirá que ingrese el comando para trabajar con el contexto ()al momento sólo he agregado comandos para **desarrollar software** pero eso va a cambiar en el futuro próximo)
- **ollama/code/laravel/devel** Este comando enviará el contexto hacia Ollama (Es más lento pero lo elijo para mantener mi privacidad)
- **groq/code/laravel/devel** Este comando enviará el contexto a Groq que hace un excelente trabajo de manera gratuita y extremadamente rápido
Ejemplo de uso:
1. Selecciona un bloque de código en modo visual.
2. Presiona `<leader>ib` o ejecuta `:IntelligenceBridge`.
3. Ingresa tu consulta cuando se te solicite.
3.1. **ollama/code/laravel/devel** Este comando enviará el contexto hacia Ollama (Es más lento pero lo elijo para mantener mi privacidad)
3.2. **groq/code/laravel/devel** Este comando enviará el contexto a Groq que hace un excelente trabajo de manera gratuita y extremadamente rápido
4. El plugin procesará tu consulta y el código seleccionado usando Ollama (o Groq si está configurado), y mostrará los resultados.

### Definición del contexto
4.1 Definición del contexto. Esta es la manera que se delimita el alcance del LLM

Esta es la manera que se delimita el alcance del LLM
**code/laravel/devel** Cuando se ha usado una de las variantes devel los requerimientos son bloques que están delimitados por las palabras clave inicio_requerimiento y fin_requerimiento, por ejemplo:

#### code/laravel/devel
El código con el requrimiento podría ser algo similar a lo siguiente:

Cuando se ha usado una de las variantes **devel** los requerimientos son bloques que están delimitados por las palabras clave **//inicio_requerimiento** y **//fin_requerimiento**, por ejemplo:
```php
public function update(Request $request, $id)
{
//inicio_requerimiento
// En este segmento quiero que agregues el código más común que en Laravel sirva para actualizar un modelo User
//fin_requerimiento
}
```

Luego de invocar al plugin (uso), la respuesta esperada sería algo similar a lo siguiente:

```php
public function update(Request $request, $id)
{
$user = User::find($id);
if ($request->input('password')) {
$user->password = bcrypt($request->input('password'));
}
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->save();
return redirect()->route('users.index')->with('success', 'Usuario actualizado correctamente');
}
```

El código con el requrimiento podría ser algo similar a lo siguiente:
## Personalización
Puedes personalizar el comportamiento del plugin editando tu `config.env`. Ejemplo:

```php
public function update(Request $request, $id)
{
//inicio_requerimiento
// En este segmento quiero que agregues el código más común que en Laravel sirva para actualizar un modelo User
//fin_requerimiento
}
```

Luego de invocar al plugin (**uso**), la respuesta esperada sería algo similar a lo siguiente:

```php
public function update(Request $request, $id)
{
$user = User::find($id);
if ($request->input('password')) {
$user->password = bcrypt($request->input('password'));
}
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->save();

return redirect()->route('users.index')->with('success', 'Usuario actualizado correctamente');
}
OLLAMA_MODEL=codellama
GROQ_MODEL=llama-3.1-70b-versatile
```
---

## Notas

### Automatización
## APIs y Plataformas Utilizadas
- [Ollama](https://ollama.ai/): Plataforma local para ejecución de modelos de IA, proporcionando privacidad y eficiencia (recomendado).
- [Groq API](https://console.groq.com/): Para procesamiento de lenguaje natural en la nube (opcional).
Caundo se usa GROQ el plugin establece la interconexión a través de un script de Python, para no modificar innecesariamente el sistema operativo se configura un entorno virtual para allí instalar todas las dependencias, este proceso es automático y se ejecuta la primera vez que se invoca al _plugin_ (internamente se ejecuta el siguiente comando):

```bash
python3 -m venv venv
```
## Contribuir
Las contribuciones son bienvenidas! Por favor, lee [CONTRIBUTING.md](CONTRIBUTING.md) para detalles sobre nuestro código de conducta y el proceso para enviarnos pull requests.
### APIs integradas
## Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo [LICENSE.md](LICENSE.md) para más detalles.
Al momento se puede desarrollar con las siguientes APIs:
## Soporte
Si encuentras algún problema o tienes alguna sugerencia, por favor abre un issue en el [rastreador de problemas de GitHub](https://github.com/pepo-ec/vim-intelligence-bridge/issues).
- Ollama
- Groq
## Agradecimientos
- Agradecemos al equipo de Ollama por proporcionar una excelente plataforma local para IA.
- A Groq por su API como alternativa en la nube.
- A todos los contribuidores y usuarios que ayudan a mejorar este plugin.
Espero ampliar este listado en el futuro próximo

0 comments on commit fd335b8

Please sign in to comment.