Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Amm1rr/WebAI-to-API

Claude, Gemini to API : ) (Don't need API KEY)
https://github.com/Amm1rr/WebAI-to-API

ai api bard chatbot chatgpt chatgpt-api claude claude-3 claude-ai claude-api development fastapi free gemini gemini-api google-bard-api python webserver webservice

Last synced: 10 days ago
JSON representation

Claude, Gemini to API : ) (Don't need API KEY)

Awesome Lists containing this project

README

        

**NOTE:** This is a research project. Please do not use it commercially and use it responsibly.


# WebAI to API

This project implements a web API that offers a unified interface to Google Gemini, and Claude 3.

[![Image](assets/WebAI-Configuration-Thumb.jpg)](assets/WebAI-Configuration.jpg)

### Key Features

- **Self-hosted:** Python/FastAPI enables flexibility to run anywhere. Not locked into proprietary platforms.

- **Streaming support:** Real-time responses from Claude streaming.

- **Lightweight and scalable:** Built with FastAPI for high performance.

- **API Key:** No API Key required.

### Status

✅ **_Claude-3_** API integration is also fully implemented and available

✅ **_Google Gemini_** API integration available now

✅ **_UI Configuration_**: Implement routing for [localhost:8000/WebAI](http://localhost:8000/WebAI) path

⚙️ **_PIP_**: In progress


[![Image](assets/Endpoints-Docs-Thumb.png)](assets/Endpoints-Docs.png)


This repository is up-to-date.

Please don't forget to give a Star ⭐




### Prerequisites

Python version >= 3.10
Accounts on the following (all offer free signups):

- Google Gemini: https://gemini.google.com/
- Claude: https://claude.ai/

Then, add your token(s) to the [**`Config.conf`**](#configuration) file. (see [**Configuration**](#configuration) section).


> [!NOTE]
>
> **Note**: [**Claude**](https://claude.ai/) and [**Gemini**](https://gemini.google.com/) offer Auto Login options - you can either log in through your browser and skip this step.


## Installation


### Step 1. Clone Repository

```bash
git clone https://github.com/Amm1rr/WebAI-to-API.git && cd WebAI-to-API

python -m venv .venv

source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows

pip install -r requirements.txt
```


### Step 2. Start Web Server

Navigate into the **`webai2api`** directory, and run the web server:

```bash
cd WebAI-to-API/webai2api/

python run.py

```


Now the _API documentation_ and _Configuration Web UI_ should be available at the following addresses:

> [!TIP]
>
> **Open Web UI Configuration: [http://localhost:8000/WebAI](http://localhost:8000/WebAI)**
>
> **Open API documentation: [http://localhost:8000/docs](http://localhost:8000/docs)**


### Available **Endpoints:**

> [!NOTE]
>
> **Gemini**
>
> **http://localhost:8000/gemini**
>
> ---
>
> **Claude**
>
> **http://localhost:8000/claude**
>
> ---
>
> **Claude/Gemini**
>
> **http://localhost:8000/v1/chat/completions**



**Input / Output**

```bash
# Input:
_____

{
"message": "Hi, Who are you?",
"stream": true
}

--------------------

# Output:
_____

{
I am a Chatbot assistant :)
}

--------------------

# Response Output:
_____

# Streaming
"String"

# Not Streaming
"String"

```




## Web UI Development Environment Setup (Optional)

#### Prerequisites:

- [Node.js](http://nodejs.org): Download and install from the official website (https://nodejs.org)

First , **Navigate to the UI directory:**

```bash
cd WebAI-to-API/webai2api/UI
```

1. **Install dependencies:**

```bash
npm install
```

2. **Build the project:**

```bash
npm run build
```


## Example

Once you have launched the web server using [`python webai2api\run.py`](#step-2-start-web-server):

> [!NOTE]
>
> Note: The first argument to run the example determines whether to return streaming or not.

```bash
cd examples/

python WebAPI-to-API/webai2api/test.py

OR

python example_claude.py false
python example_claude.py true

python example_gemini.py

```

or try **Claude** with **cURL**

run this cURL command in a terminal window:

```bash
curl -X 'POST' \
'http://localhost:8000/claude' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"message": "who are you?",
"stream": false
}'

```


> [!NOTE]
>
> **Note**: The **`session_id`** is configured in the [**Config.conf**](#configuration) file. If you send this variable empty, it will use the [**Config.conf**](#configuration)


## Usage

#### How to find tokens

> [!NOTE]
>
> **Note**: [**Claude**](https://claude.ai/) and [**Gemini**](https://gemini.google.com/) offer two authentication options - you can either log in through your browser and skip this step, or you can follow the instructions below to configure the authentication.

> [!IMPORTANT]
>
> "The auto login by browser issue is caused by using multiple accounts or browser profiles. It will take some time to fully resolve. A future update will address it. For now, if you have problems logging in with your browsers, try logging in with just one browser or manually copy sessions and cookies as a workaround, as described in the instructions below."


The easiest way is to just log in to the chatbot websites. ([Claude](https://claude.ai/) | [Gemini](https://gemini.google.com/))


OR


First you need to add your tokens to the [**`Config.conf`**](#configuration) file (see [**Configuration**](#configuration) section).


#### Gemini

[![Image](assets/Bard-Thumb.jpg)](assets/Bard.jpg)

**Method 1:**

For Gemini, all you need to do is [login](https://gemini.google.com/) to your account using your web browser. (Firefox, Chrome, Safari, Edge...)

**Method 2:**

_`Google Gemini:`_ Please obtain the cookies mentioned here from an authorized session on gemini.google.com. The cookies can be used to send POST requests to the /gemini endpoint along with a message in a JSON payload. It is important that the **session_id**, which is your **\_\_Secure-1PSID** cookie, and the **session_idts** and **session_idcc**, which is your **Secure-1PSIDTS** and **Secure-1PSIDCC** cookie, are included in the request. ([Screenshot](assets/Bard.jpg))

| Name | Session Name |
|----------------|--------------------|
| `session_id` | `__Secure-1PSID` |
| `session_idts` | `__Secure-1PSIDTS` |
| `session_idcc` | `__Secure-1PSIDCC` |

1. Login to [gemini.google.com](https://gemini.google.com)
2. Open `Developer Tools` (Press **F12**)
3. Go to `Application Tab`
4. Go to `Cookies Tab`
5. Copy the content of `__Secure-1PSID` and `__Secure-1PSIDTS` and `__Secure-1PSIDCC`. Copy the value of those cookie.
6. Set in **[Config.conf](#configuration)** file.




#### Claude

[![Image](assets/Claude-Thumb.jpg)](assets/Claude.jpg)

**Method 1:**

For Claude, all you need to do is [login](https://claude.ai/) to your account using your web browser. (Firefox, Chrome, Safari, Edge...)

**Method 2:**

_`Claude:`_ You can get cookie from the browser's developer tools network tab ( see for any [claude.ai](https://claude.ai/) requests check out cookie ,copy whole value ) or storage tab ( You can find cookie of claude.ai ,there will be four values ) ([Screenshot](assets/Claude.jpg))

1. Login to [claude.ai](https://claude.ai/)
2. Open `Developer Tools` (Press **F12**)
3. Go to `Network Tab`
4. Select an ajax request (like step 3 in [picture](assets/Claude.jpg))
5. Copy the content of `Cookie`
6. Set in **[Config.conf](#configuration)** file.


## Configuration

- Open Web UI Panel: **[http://localhost:8000/WebAI](http://localhost:8000/WebAI)**


How to [find tokens](#usage)

- [Google Gemini](#gemini)
- [Claude](#claude)

> [!NOTE]
>
> **Note**: Claude and Gemini present Auto Login options - logging in through your browser or configuring Claude and Gemini using the provided config file.


### Configuring the Model Type for `/v1/chat/completions`

You can specify the model type in the settings for the `/v1/chat/completions` endpoint. The available options are "Claude" and "Gemini".
By default, the system uses the "Claude" model.

```bash
# Case-Sensitive

[Main]
Model=Claude
# or
Model=Gemini
```


#### Config File Path:

- WebAI-to-API\webai2api\Config.conf

```bash
# Case-Sensitive

[Main]
Model = [Claude] or [Gemini]

[Claude]
COOKIE=[YOURS]

[Gemini]
SESSION_ID=[YOURS]
SESSION_IDTS=[YOURS]
SESSION_IDCC=[YOURS]

```


## Licensing

This project is licensed under the MIT License. Feel free to use it however you like.


[![](https://visitcount.itsvg.in/api?id=amm1rr&label=V&color=0&icon=2&pretty=true)](https://github.com/Amm1rr/)