lodestonegpt


Namelodestonegpt JSON
Version 0.0.4 PyPI version JSON
download
home_page
Summary🤖 Modular Auto-GPT Framework Build For Project Lodestone
upload_time2023-11-04 12:29:19
maintainer
docs_urlNone
author
requires_python>=3.10
license
keywords
VCS
bugtrack_url
requirements javascript click rich fastapi structlog uvicorn tinydb fuzzyfinder g4f requests py-cord aiohttp python-dotenv
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
<H1>
<p align="center">
  L♾️pGPT
</p>
</H1>
<p align="center">
    <b>A Modular Auto-GPT Framework</b>
</p>

<p align="center">
    <a href="https://discord.gg/rqs26cqx7v">
        <img src="https://img.shields.io/discord/1098162593291587594?style=for-the-badge">
    </a>
</p>




L♾️pGPT is a re-implementation of the popular [Auto-GPT](https://github.com/Significant-Gravitas/Auto-GPT) project as a proper python package, written with modularity and extensibility in mind.

## 🚀 Features 🚀

*  **"Plug N Play" API** - Extensible and modular "Pythonic" framework, not just a command line tool. Easy to add new features, integrations and custom agent capabilities, all from python code, no nasty config files!
*  **GPT 3.5 friendly** - Better results than Auto-GPT for those who don't have GPT-4 access yet!
*  **Minimal prompt overhead** - Every token counts. We are continuously working on getting the best results with the least possible number of tokens.
*  **Human in the Loop** - Ability to "course correct" agents who go astray via human feedback.
*  **Full state serialization** - Pick up where you left off; L♾️pGPT can save the complete state of an agent, including memory and the states of its tools to a file or python object. No external databases or vector stores required (but they are still supported)!


## 🧑‍💻 Installation

### Install from PyPI

📗 **This installs the latest stable version of L♾️pGPT. This is recommended for most users:**

```bash
pip install lodestonegpt
```

📕 The below two methods install the latest development version of L♾️pGPT. Note that this version maybe unstable:

### Install from source

```bash
pip install git+https://www.github.com/farizrahman4u/lodestonegpt.git@main
```

### Install from source (dev)

```bash
git clone https://www.github.com/farizrahman4u/lodestonegpt.git
cd  lodestonegpt
pip install -e .
```

### Install from source (dev) using Docker
```bash
git clone https://www.github.com/farizrahman4u/lodestonegpt.git
cd  lodestonegpt
docker build -t lodestonegpt:local-dev .
```

## 🏎️ Getting Started

### Setup your OpenAI API Key 🔑

#### Option 1️⃣: Via a `.env` file

Create a `.env` file in your current working directory (wherever you are going to run L♾️pGPT from) and add the following line to it:

```bash
OPENAI_API_KEY="<your-openai-api-key>"
```

🛑 **IMPORTANT** 🛑

Windows users, please make sure "show file extensions" is enabled in your file explorer. Otherwise, your file will be named `.env.txt` instead of `.env`.

#### Option 2️⃣: Via environment variables

Set an environment variable called `OPENAI_API_KEY` to your OpenAI API Key.

How to set environment variables:
- [Windows](https://www.architectryan.com/2018/08/31/how-to-change-environment-variables-on-windows-10/)
- [Linux](https://www.freecodecamp.org/news/how-to-set-an-environment-variable-in-linux/)
- [Mac](https://phoenixnap.com/kb/set-environment-variable-mac)

### Create a new L♾️pGPT Agent🕵️:

Let's create an agent in a new [Python](https://python.org) script.

```python
from lodestonegpt.agent import Agent

agent = Agent()
```

L♾️pGPT uses `gpt-3.5-turbo` by default and all outputs shown here are made using it. GPT-4 users can set `model="gpt-4"` instead:

```python
agent = Agent(model="gpt-4")
```


### Setup the Agent🕵️'s attributes:

```python
agent.name = "ResearchGPT"
agent.description = "an AI assistant that researches and finds the best tech products"
agent.goals = [
    "Search for the best headphones on Google",
    "Analyze specs, prices and reviews to find the top 5 best headphones",
    "Write the list of the top 5 best headphones and their prices to a file",
    "Summarize the pros and cons of each headphone and write it to a different file called 'summary.txt'",
]
```

And we're off! Let's run the Agent🕵️'s CLI:

```python
agent.cli()
```

Save your Python file as `research_gpt.py` and run it:

```bash
python research_gpt.py
```

<img src="/docs/assets/imgs/lodestonegpt_demo_pic.png?raw=true" height="350">

You can exit the CLI by typing "exit".

### 🔁 Continuous Mode 🔁

If `continuous` is set to `True`, the agent will not ask for the user's permission to execute commands. It may go into infinite loops, so use it at your own risk!

```python
agent.cli(continuous=True)
```

### 💻 Command Line Only Mode

You can run L♾️pGPT directly from the command line without having to write any python code as well:

```bash
lodestonegpt run
```

Run `lodestonegpt --help` to see all the available options.

### 🐋 Docker Mode

You can run L♾️pGPT in the previously mentioned modes, using Docker:

```bash
# CLI mode
docker run -i --rm lodestonegpt:local-dev lodestonegpt run

# Script mode example
docker run -i --rm -v "$(pwd)/scripts:/scripts" lodestonegpt:local-dev python /scripts/myscript.py

```

## ⚒️ Adding custom tools ⚒️

L♾️pGPT agents come with a set of builtin tools which allows them to perform various basic tasks such as searching the web, filesystem operations, etc. You can view these tools with `print(agent.tools)`.

In addition to these builtin tools, you can also add your own tools to the agent's toolbox.

### Example: WeatherGPT 🌦️

Let's create WeatherGPT, an AI assistant for all things weather.

A tool inherits from `BaseTool` and you only need to write a docstring to get your tool up and running!

```python
from lodestonegpt.tools import BaseTool

class GetWeather(BaseTool):
    """Quickly get the weather for a given city

    Args:
        city (str): name of the city
    
    Returns:
        dict: The weather report for the city
    """
    
    def run(self, city):
        ...
```

L♾️pGPT gives a default ID to your tool but you can override them if you'd like:

```python
class GetWeather(BaseTool):
    """Quickly get the weather for a given city

    Args:
        city (str): name of the city
    
    Returns:
        dict: The weather report for the city
    """

    @property
    def id(self):
        return "get_weather_command"
```

Now let's define what our tool will do in its `run` method:

```python
import requests

# Define your custom tool
class GetWeather(BaseTool):
    """Quickly get the weather for a given city

    Args:
        city (str): name of the city
    
    Returns:
        dict: The weather report for the city
    """
    
    def run(self, city):
        try:
            url = "https://wttr.in/{}?format=%l+%C+%h+%t+%w+%p+%P".format(city)
            data = requests.get(url).text.split(" ")
            keys = ("location", "condition", "humidity", "temperature", "wind", "precipitation", "pressure")
            data = dict(zip(keys, data))
            return data
        except Exception as e:
            return f"An error occurred while getting the weather: {e}."
```

That's it! You've built your first custom tool. Let's register it with a new agent and run it:

```python
from lodestonegpt.tools import WriteToFile
import lodestonegpt

# Register custom tool type
# This is actually not required here, but is required when you load a saved agent with custom tools.
lodestonegpt.tools.register_tool_type(GetWeather)

# Create Agent
agent = lodestonegpt.Agent(tools=[GetWeather, WriteToFile])
agent.name = "WeatherGPT"
agent.description = "an AI assistant that tells you the weather"
agent.goals = [
    "Get the weather for NewYork and Beijing",
    "Give the user tips on how to dress for the weather in NewYork and Beijing",
    "Write the tips to a file called 'dressing_tips.txt'"
]

# Run the agent's CLI
agent.cli()
```

Let's take a look at the `dressing_tips.txt` file that WeatherGPT wrote for us:

dressing_tips.txt
```
- It's Clear outside with a temperature of +10°C in Beijing. Wearing a light jacket and pants is recommended.
- It's Overcast outside with a temperature of +11°C in New York. Wearing a light jacket, pants, and an umbrella is recommended.
```

## 🚢 Course Correction

Unlike Auto-GPT, the agent does not terminate when the user denies the execution of a command. Instead it asks the user for feedback to correct its course.

To correct the agent's course, just deny execution and provide feedback:

<img src="/docs/assets/imgs/course_correction_1.png?raw=true">

The agent has updated its course of action:

<img src="/docs/assets/imgs/course_correction_2.png?raw=true">


## 💾 Saving and Loading Agent State 💾

You can save an agent's state to a json file with:

```python
agent.save("ResearchGPT.json")
```

This saves the agent's configuration (model, name, description etc) as well as its internal state (conversation state, memory, tool states etc).
You can also save just the confifguration by passing `include_state=False` to `agent.save()`:

```python
agent.save("ResearchGPT.json", include_state=False)
```

Then pick up where you left off with:

```python
import lodestonegpt
agent = lodestonegpt.Agent.load("ResearchGPT.json")
agent.cli()
```

or by running the saved agent from the command line:

```bash
lodestonegpt run ResearchGPT.json
```

You can convert the agent state to a json compatible python dictionary instead of writing to a file:

```python
agent_config = agent.config()
```

To get just the configuration without the internal state:

```python
agent_config = agent.config(include_state=False)
```


To reload the agent from the config, use:

```python
import lodestonegpt

agent = lodestonegpt.Agent.from_config(agent_config)
```

## 📋 Requirements

- Python 3.8+
- [An OpenAI API Key](https://platform.openai.com/account/api-keys)
- Google Chrome

### Optional Requirements

For official google search support you will need to setup two environment variable keys `GOOGLE_API_KEY` and `CUSTOM_SEARCH_ENGINE_ID`, here is how to get them:

1. Create an application on the [Google Developers Console][google-console].
2. Create your custom search engine using [Google Custom Search][google-custom-search].
3. Once your custom search engine is created, select it and get into the details page of the search engine.
    - On the "Basic" section, you will find the "Search engine ID" field, that value is what you will use for the `CUSTOM_SEARCH_ENGINE_ID` environment variable.
    - Now go to the "Programmatic Access" section at the bottom of the page.
        - Create a "Custom Search JSON API"
        - Follow the dialog by selecting the application you created on step #1 and when you get your API key use it to populate the `GOOGLE_API_KEY` environment variable.

ℹ️ In case these are absent, L♾️pGPT will fall back to using [DuckDuckGo Search](https://pypi.org/project/duckduckgo-search/).

## 💌 Contribute 

We need A LOT of Help! Please open an issue or a PR if you'd like to contribute.

## 🌳 Community

Need help? Join our [Discord](https://discord.gg/rqs26cqx7v).

[google-console]: https://console.developers.google.com
[google-custom-search]: https://programmablesearchengine.google.com/controlpanel/create


## ⭐ Star History 📈
<img src="https://api.star-history.com/svg?repos=farizrahman4u/lodestonegpt&type=Date" alt= "Star History Chart" height="350">


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "lodestonegpt",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "",
    "keywords": "",
    "author": "",
    "author_email": "Silke Pilon <silkepilon2009@gmail.com>, HellishBro <hellishbro@outlook.com>, Levy <Levy@example.com>",
    "download_url": "https://files.pythonhosted.org/packages/9a/0f/6ca7696488b103d9d9d33c1a868f1007ef06893c2c30aba6dc8ac13cc109/lodestonegpt-0.0.4.tar.gz",
    "platform": null,
    "description": "\n<H1>\n<p align=\"center\">\n  L\u267e\ufe0fpGPT\n</p>\n</H1>\n<p align=\"center\">\n    <b>A Modular Auto-GPT Framework</b>\n</p>\n\n<p align=\"center\">\n    <a href=\"https://discord.gg/rqs26cqx7v\">\n        <img src=\"https://img.shields.io/discord/1098162593291587594?style=for-the-badge\">\n    </a>\n</p>\n\n\n\n\nL\u267e\ufe0fpGPT is a re-implementation of the popular [Auto-GPT](https://github.com/Significant-Gravitas/Auto-GPT) project as a proper python package, written with modularity and extensibility in mind.\n\n## \ud83d\ude80 Features \ud83d\ude80\n\n*  **\"Plug N Play\" API** - Extensible and modular \"Pythonic\" framework, not just a command line tool. Easy to add new features, integrations and custom agent capabilities, all from python code, no nasty config files!\n*  **GPT 3.5 friendly** - Better results than Auto-GPT for those who don't have GPT-4 access yet!\n*  **Minimal prompt overhead** - Every token counts. We are continuously working on getting the best results with the least possible number of tokens.\n*  **Human in the Loop** - Ability to \"course correct\" agents who go astray via human feedback.\n*  **Full state serialization** - Pick up where you left off; L\u267e\ufe0fpGPT can save the complete state of an agent, including memory and the states of its tools to a file or python object. No external databases or vector stores required (but they are still supported)!\n\n\n## \ud83e\uddd1\u200d\ud83d\udcbb Installation\n\n### Install from PyPI\n\n\ud83d\udcd7 **This installs the latest stable version of L\u267e\ufe0fpGPT. This is recommended for most users:**\n\n```bash\npip install lodestonegpt\n```\n\n\ud83d\udcd5 The below two methods install the latest development version of L\u267e\ufe0fpGPT. Note that this version maybe unstable:\n\n### Install from source\n\n```bash\npip install git+https://www.github.com/farizrahman4u/lodestonegpt.git@main\n```\n\n### Install from source (dev)\n\n```bash\ngit clone https://www.github.com/farizrahman4u/lodestonegpt.git\ncd  lodestonegpt\npip install -e .\n```\n\n### Install from source (dev) using Docker\n```bash\ngit clone https://www.github.com/farizrahman4u/lodestonegpt.git\ncd  lodestonegpt\ndocker build -t lodestonegpt:local-dev .\n```\n\n## \ud83c\udfce\ufe0f Getting Started\n\n### Setup your OpenAI API Key \ud83d\udd11\n\n#### Option 1\ufe0f\u20e3: Via a `.env` file\n\nCreate a `.env` file in your current working directory (wherever you are going to run L\u267e\ufe0fpGPT from) and add the following line to it:\n\n```bash\nOPENAI_API_KEY=\"<your-openai-api-key>\"\n```\n\n\ud83d\uded1 **IMPORTANT** \ud83d\uded1\n\nWindows users, please make sure \"show file extensions\" is enabled in your file explorer. Otherwise, your file will be named `.env.txt` instead of `.env`.\n\n#### Option 2\ufe0f\u20e3: Via environment variables\n\nSet an environment variable called `OPENAI_API_KEY` to your OpenAI API Key.\n\nHow to set environment variables:\n- [Windows](https://www.architectryan.com/2018/08/31/how-to-change-environment-variables-on-windows-10/)\n- [Linux](https://www.freecodecamp.org/news/how-to-set-an-environment-variable-in-linux/)\n- [Mac](https://phoenixnap.com/kb/set-environment-variable-mac)\n\n### Create a new L\u267e\ufe0fpGPT Agent\ud83d\udd75\ufe0f:\n\nLet's create an agent in a new [Python](https://python.org) script.\n\n```python\nfrom lodestonegpt.agent import Agent\n\nagent = Agent()\n```\n\nL\u267e\ufe0fpGPT uses `gpt-3.5-turbo` by default and all outputs shown here are made using it. GPT-4 users can set `model=\"gpt-4\"` instead:\n\n```python\nagent = Agent(model=\"gpt-4\")\n```\n\n\n### Setup the Agent\ud83d\udd75\ufe0f's attributes:\n\n```python\nagent.name = \"ResearchGPT\"\nagent.description = \"an AI assistant that researches and finds the best tech products\"\nagent.goals = [\n    \"Search for the best headphones on Google\",\n    \"Analyze specs, prices and reviews to find the top 5 best headphones\",\n    \"Write the list of the top 5 best headphones and their prices to a file\",\n    \"Summarize the pros and cons of each headphone and write it to a different file called 'summary.txt'\",\n]\n```\n\nAnd we're off! Let's run the Agent\ud83d\udd75\ufe0f's CLI:\n\n```python\nagent.cli()\n```\n\nSave your Python file as `research_gpt.py` and run it:\n\n```bash\npython research_gpt.py\n```\n\n<img src=\"/docs/assets/imgs/lodestonegpt_demo_pic.png?raw=true\" height=\"350\">\n\nYou can exit the CLI by typing \"exit\".\n\n### \ud83d\udd01 Continuous Mode \ud83d\udd01\n\nIf `continuous` is set to `True`, the agent will not ask for the user's permission to execute commands. It may go into infinite loops, so use it at your own risk!\n\n```python\nagent.cli(continuous=True)\n```\n\n### \ud83d\udcbb Command Line Only Mode\n\nYou can run L\u267e\ufe0fpGPT directly from the command line without having to write any python code as well:\n\n```bash\nlodestonegpt run\n```\n\nRun `lodestonegpt --help` to see all the available options.\n\n### \ud83d\udc0b Docker Mode\n\nYou can run L\u267e\ufe0fpGPT in the previously mentioned modes, using Docker:\n\n```bash\n# CLI mode\ndocker run -i --rm lodestonegpt:local-dev lodestonegpt run\n\n# Script mode example\ndocker run -i --rm -v \"$(pwd)/scripts:/scripts\" lodestonegpt:local-dev python /scripts/myscript.py\n\n```\n\n## \u2692\ufe0f Adding custom tools \u2692\ufe0f\n\nL\u267e\ufe0fpGPT agents come with a set of builtin tools which allows them to perform various basic tasks such as searching the web, filesystem operations, etc. You can view these tools with `print(agent.tools)`.\n\nIn addition to these builtin tools, you can also add your own tools to the agent's toolbox.\n\n### Example: WeatherGPT \ud83c\udf26\ufe0f\n\nLet's create WeatherGPT, an AI assistant for all things weather.\n\nA tool inherits from `BaseTool` and you only need to write a docstring to get your tool up and running!\n\n```python\nfrom lodestonegpt.tools import BaseTool\n\nclass GetWeather(BaseTool):\n    \"\"\"Quickly get the weather for a given city\n\n    Args:\n        city (str): name of the city\n    \n    Returns:\n        dict: The weather report for the city\n    \"\"\"\n    \n    def run(self, city):\n        ...\n```\n\nL\u267e\ufe0fpGPT gives a default ID to your tool but you can override them if you'd like:\n\n```python\nclass GetWeather(BaseTool):\n    \"\"\"Quickly get the weather for a given city\n\n    Args:\n        city (str): name of the city\n    \n    Returns:\n        dict: The weather report for the city\n    \"\"\"\n\n    @property\n    def id(self):\n        return \"get_weather_command\"\n```\n\nNow let's define what our tool will do in its `run` method:\n\n```python\nimport requests\n\n# Define your custom tool\nclass GetWeather(BaseTool):\n    \"\"\"Quickly get the weather for a given city\n\n    Args:\n        city (str): name of the city\n    \n    Returns:\n        dict: The weather report for the city\n    \"\"\"\n    \n    def run(self, city):\n        try:\n            url = \"https://wttr.in/{}?format=%l+%C+%h+%t+%w+%p+%P\".format(city)\n            data = requests.get(url).text.split(\" \")\n            keys = (\"location\", \"condition\", \"humidity\", \"temperature\", \"wind\", \"precipitation\", \"pressure\")\n            data = dict(zip(keys, data))\n            return data\n        except Exception as e:\n            return f\"An error occurred while getting the weather: {e}.\"\n```\n\nThat's it! You've built your first custom tool. Let's register it with a new agent and run it:\n\n```python\nfrom lodestonegpt.tools import WriteToFile\nimport lodestonegpt\n\n# Register custom tool type\n# This is actually not required here, but is required when you load a saved agent with custom tools.\nlodestonegpt.tools.register_tool_type(GetWeather)\n\n# Create Agent\nagent = lodestonegpt.Agent(tools=[GetWeather, WriteToFile])\nagent.name = \"WeatherGPT\"\nagent.description = \"an AI assistant that tells you the weather\"\nagent.goals = [\n    \"Get the weather for NewYork and Beijing\",\n    \"Give the user tips on how to dress for the weather in NewYork and Beijing\",\n    \"Write the tips to a file called 'dressing_tips.txt'\"\n]\n\n# Run the agent's CLI\nagent.cli()\n```\n\nLet's take a look at the `dressing_tips.txt` file that WeatherGPT wrote for us:\n\ndressing_tips.txt\n```\n- It's Clear outside with a temperature of +10\u00b0C in Beijing. Wearing a light jacket and pants is recommended.\n- It's Overcast outside with a temperature of +11\u00b0C in New York. Wearing a light jacket, pants, and an umbrella is recommended.\n```\n\n## \ud83d\udea2 Course Correction\n\nUnlike Auto-GPT, the agent does not terminate when the user denies the execution of a command. Instead it asks the user for feedback to correct its course.\n\nTo correct the agent's course, just deny execution and provide feedback:\n\n<img src=\"/docs/assets/imgs/course_correction_1.png?raw=true\">\n\nThe agent has updated its course of action:\n\n<img src=\"/docs/assets/imgs/course_correction_2.png?raw=true\">\n\n\n## \ud83d\udcbe Saving and Loading Agent State \ud83d\udcbe\n\nYou can save an agent's state to a json file with:\n\n```python\nagent.save(\"ResearchGPT.json\")\n```\n\nThis saves the agent's configuration (model, name, description etc) as well as its internal state (conversation state, memory, tool states etc).\nYou can also save just the confifguration by passing `include_state=False` to `agent.save()`:\n\n```python\nagent.save(\"ResearchGPT.json\", include_state=False)\n```\n\nThen pick up where you left off with:\n\n```python\nimport lodestonegpt\nagent = lodestonegpt.Agent.load(\"ResearchGPT.json\")\nagent.cli()\n```\n\nor by running the saved agent from the command line:\n\n```bash\nlodestonegpt run ResearchGPT.json\n```\n\nYou can convert the agent state to a json compatible python dictionary instead of writing to a file:\n\n```python\nagent_config = agent.config()\n```\n\nTo get just the configuration without the internal state:\n\n```python\nagent_config = agent.config(include_state=False)\n```\n\n\nTo reload the agent from the config, use:\n\n```python\nimport lodestonegpt\n\nagent = lodestonegpt.Agent.from_config(agent_config)\n```\n\n## \ud83d\udccb Requirements\n\n- Python 3.8+\n- [An OpenAI API Key](https://platform.openai.com/account/api-keys)\n- Google Chrome\n\n### Optional Requirements\n\nFor official google search support you will need to setup two environment variable keys `GOOGLE_API_KEY` and `CUSTOM_SEARCH_ENGINE_ID`, here is how to get them:\n\n1. Create an application on the [Google Developers Console][google-console].\n2. Create your custom search engine using [Google Custom Search][google-custom-search].\n3. Once your custom search engine is created, select it and get into the details page of the search engine.\n    - On the \"Basic\" section, you will find the \"Search engine ID\" field, that value is what you will use for the `CUSTOM_SEARCH_ENGINE_ID` environment variable.\n    - Now go to the \"Programmatic Access\" section at the bottom of the page.\n        - Create a \"Custom Search JSON API\"\n        - Follow the dialog by selecting the application you created on step #1 and when you get your API key use it to populate the `GOOGLE_API_KEY` environment variable.\n\n\u2139\ufe0f In case these are absent, L\u267e\ufe0fpGPT will fall back to using [DuckDuckGo Search](https://pypi.org/project/duckduckgo-search/).\n\n## \ud83d\udc8c Contribute \n\nWe need A LOT of Help! Please open an issue or a PR if you'd like to contribute.\n\n## \ud83c\udf33 Community\n\nNeed help? Join our [Discord](https://discord.gg/rqs26cqx7v).\n\n[google-console]: https://console.developers.google.com\n[google-custom-search]: https://programmablesearchengine.google.com/controlpanel/create\n\n\n## \u2b50 Star History \ud83d\udcc8\n<img src=\"https://api.star-history.com/svg?repos=farizrahman4u/lodestonegpt&type=Date\" alt= \"Star History Chart\" height=\"350\">\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "\ud83e\udd16 Modular Auto-GPT Framework Build For Project Lodestone",
    "version": "0.0.4",
    "project_urls": {
        "Documentation": "https://github.com/SilkePilon/Lodestone/blob/main/README.md",
        "Homepage": "https://github.com/SilkePilon/Lodestone",
        "Repository": "https://github.com/SilkePilon/Lodestone"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a7e09027f40cb13be80a9be7be729a2805b480430b2aaebf1dd0b85d0efd8425",
                "md5": "16f40de869e74491e76ebda1bdc039e4",
                "sha256": "c845205edd2da16ba6d49358a8b0c9d7bc9dbe58b9b38b2d4ca9cc67df672156"
            },
            "downloads": -1,
            "filename": "lodestonegpt-0.0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "16f40de869e74491e76ebda1bdc039e4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 50499,
            "upload_time": "2023-11-04T12:29:17",
            "upload_time_iso_8601": "2023-11-04T12:29:17.948320Z",
            "url": "https://files.pythonhosted.org/packages/a7/e0/9027f40cb13be80a9be7be729a2805b480430b2aaebf1dd0b85d0efd8425/lodestonegpt-0.0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9a0f6ca7696488b103d9d9d33c1a868f1007ef06893c2c30aba6dc8ac13cc109",
                "md5": "70ce7d034884b3fc3a9c3df603f42780",
                "sha256": "c6ffb339145b5eb7bc12bba38ddbde3b1188f2f29def3167ab8d54c5318afd06"
            },
            "downloads": -1,
            "filename": "lodestonegpt-0.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "70ce7d034884b3fc3a9c3df603f42780",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 40403,
            "upload_time": "2023-11-04T12:29:19",
            "upload_time_iso_8601": "2023-11-04T12:29:19.835369Z",
            "url": "https://files.pythonhosted.org/packages/9a/0f/6ca7696488b103d9d9d33c1a868f1007ef06893c2c30aba6dc8ac13cc109/lodestonegpt-0.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-04 12:29:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "SilkePilon",
    "github_project": "Lodestone",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "javascript",
            "specs": []
        },
        {
            "name": "click",
            "specs": []
        },
        {
            "name": "rich",
            "specs": []
        },
        {
            "name": "fastapi",
            "specs": []
        },
        {
            "name": "structlog",
            "specs": []
        },
        {
            "name": "uvicorn",
            "specs": []
        },
        {
            "name": "tinydb",
            "specs": []
        },
        {
            "name": "fuzzyfinder",
            "specs": []
        },
        {
            "name": "g4f",
            "specs": []
        },
        {
            "name": "requests",
            "specs": []
        },
        {
            "name": "py-cord",
            "specs": []
        },
        {
            "name": "aiohttp",
            "specs": []
        },
        {
            "name": "python-dotenv",
            "specs": []
        }
    ],
    "lcname": "lodestonegpt"
}
        
Elapsed time: 0.25314s