AI prompts
base on null # Noa Assistant
This repository contains all AI stuff of Noa that can be used in parallel with\
a Authentication server to protect APIs and throttled usage\
Working features:
1. Conversational AI
2. Conversation with Photos
3. Voice transcription
4. Web Search
### Setup
1. Copy the `.env.example` file to `.env` and fill in the keys
Note: for reverse image search a image cdn needed, you can use any api which accepts image and returns a url.\
format of the api should be like this.\
Or this can be avoided if not using reverse image search
```sh
curl -F'file=@path/to/yourfile.png' -Fexpires=2 example.com
```
1. Create and activate a python virtual enviroment(optional). eg. from [freecodecamp](https://www.freecodecamp.org/news/how-to-setup-virtual-environments-in-python/)
2. Install [ffmpeg](https://ffmpeg.org/download.html), and make sure its available in PATH variable
3. Install required python packages
```bash
pip install -r requirements.txt
```
4. Run the server
```bash
python app.py --server
```
vision tools, search tools, assistant can be selected by passing the following arguments
```bash
python app.py --server --vision gpt-4-vision-preview --search-api serpapi --assistant gpt
```
Now the server should be running on `http://localhost:8000` if default port is used
### API
#### POST /mm
```javascript
await fetch('localhost:8000/mm', {
method: 'POST',
body: new FormData({
mm: JSON.stringify({
prompt: 'who are you?',
messages: [
{
role: 'user',
content: 'Hi'
},
{
role: 'assistant',
content: 'Hello how can I help you?'
}
],
gps: [23.646965, 87.159115],
local_time: 'Tuesday, March 12, 2024, 7:24 AM',
address: 'london',
vision: 'claude-3-haiku-20240307'
}),
image: new File(['path/to/yourfile.png'], 'yourfile.png'),
audio: new File(['path/to/yourfile.wav'], 'yourfile.wav')
})
})
```
#### POST /health
```javascript
await fetch('localhost:8000/health')
```
### workflow

", Assign "at most 3 tags" to the expected json: {"id":"9004","tags":[]} "only from the tags list I provide: []" returns me the "expected json"