mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2025-12-17 22:14:28 +01:00
Merge branch 'master' into redis-backend
This commit is contained in:
@@ -9,4 +9,6 @@ CUSTOM_SEARCH_ENGINE_ID=
|
|||||||
USE_AZURE=False
|
USE_AZURE=False
|
||||||
OPENAI_API_BASE=your-base-url-for-azure
|
OPENAI_API_BASE=your-base-url-for-azure
|
||||||
OPENAI_API_VERSION=api-version-for-azure
|
OPENAI_API_VERSION=api-version-for-azure
|
||||||
OPENAI_DEPLOYMENT_ID=deployment-id-for-azure
|
OPENAI_DEPLOYMENT_ID=deployment-id-for-azure
|
||||||
|
IMAGE_PROVIDER=dalle
|
||||||
|
HUGGINGFACE_API_TOKEN=
|
||||||
24
README.md
24
README.md
@@ -9,7 +9,7 @@ Auto-GPT is an experimental open-source application showcasing the capabilities
|
|||||||
https://user-images.githubusercontent.com/22963551/228855501-2f5777cf-755b-4407-a643-c7299e5b6419.mp4
|
https://user-images.githubusercontent.com/22963551/228855501-2f5777cf-755b-4407-a643-c7299e5b6419.mp4
|
||||||
|
|
||||||
|
|
||||||
## 💖 Help Fund Auto-GPT's Development
|
<h2 align="center"> 💖 Help Fund Auto-GPT's Development 💖</h2>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
If you can spare a coffee, you can help to cover the API costs of developing Auto-GPT and help push the boundaries of fully autonomous AI!
|
If you can spare a coffee, you can help to cover the API costs of developing Auto-GPT and help push the boundaries of fully autonomous AI!
|
||||||
A full day of development can easily cost as much as $20 in API costs, which for a free project is quite limiting.
|
A full day of development can easily cost as much as $20 in API costs, which for a free project is quite limiting.
|
||||||
@@ -17,14 +17,13 @@ Your support is greatly appreciated
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
Development of this free, open-source project is made possible by all the <a href="https://github.com/Torantulino/Auto-GPT/graphs/contributors">contributors</a> and <a href="https://github.com/sponsors/Torantulino">sponsors</a>. If you'd like to sponsor this project and have your avatar or company logo appear below <a href="https://github.com/sponsors/Torantulino">click here</a>. 💖
|
Development of this free, open-source project is made possible by all the <a href="https://github.com/Torantulino/Auto-GPT/graphs/contributors">contributors</a> and <a href="https://github.com/sponsors/Torantulino">sponsors</a>. If you'd like to sponsor this project and have your avatar or company logo appear below <a href="https://github.com/sponsors/Torantulino">click here</a>.
|
||||||
<p align="center">
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://github.com/thepok"><img src="https://github.com/thepok.png" width="50px" alt="thepok" /></a> <a href="https://github.com/SpacingLily"><img src="https://github.com/SpacingLily.png" width="50px" alt="SpacingLily" /></a> <a href="https://github.com/m"><img src="https://github.com/m.png" width="50px" alt="m" /></a> <a href="https://github.com/zkonduit"><img src="https://github.com/zkonduit.png" width="50px" alt="zkonduit" /></a> <a href="https://github.com/maxxflyer"><img src="https://github.com/maxxflyer.png" width="50px" alt="maxxflyer" /></a> <a href="https://github.com/tekelsey"><img src="https://github.com/tekelsey.png" width="50px" alt="tekelsey" /></a> <a href="https://github.com/nocodeclarity"><img src="https://github.com/nocodeclarity.png" width="50px" alt="nocodeclarity" /></a> <a href="https://github.com/tjarmain"><img src="https://github.com/tjarmain.png" width="50px" alt="tjarmain" /></a> <a href="https://github.com/alexisneuhaus"><img src="https://github.com/alexisneuhaus.png" width="50px" alt="alexisneuhaus" /></a> <a href="https://github.com/jaumebalust"><img src="https://github.com/jaumebalust.png" width="50px" alt="jaumebalust" /></a> <a href="https://github.com/robinicus"><img src="https://github.com/robinicus.png" width="50px" alt="robinicus" /></a> <a href="https://github.com/digisomni"><img src="https://github.com/digisomni.png" width="50px" alt="digisomni" /></a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
<h3 align="center">Individual Sponsors</h3>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/alexisneuhaus"><img src="https://github.com/alexisneuhaus.png" width="30px" alt="alexisneuhaus" /></a> <a href="https://github.com/iokode"><img src="https://github.com/iokode.png" width="30px" alt="iokode" /></a> <a href="https://github.com/jaumebalust"><img src="https://github.com/jaumebalust.png" width="30px" alt="jaumebalust" /></a> <a href="https://github.com/nova-land"><img src="https://github.com/nova-land.png" width="30px" alt="nova-land" /></a> <a href="https://github.com/robinicus"><img src="https://github.com/robinicus.png" width="30px" alt="robinicus" /></a> <a href="https://github.com/Void-n-Null"><img src="https://github.com/Void-n-Null.png" width="30px" alt="Void-n-Null" /></a> <a href="https://github.com/ritesh24"><img src="https://github.com/ritesh24.png" width="30px" alt="ritesh24" /></a> <a href="https://github.com/merwanehamadi"><img src="https://github.com/merwanehamadi.png" width="30px" alt="merwanehamadi" /></a> <a href="https://github.com/raulmarindev"><img src="https://github.com/raulmarindev.png" width="30px" alt="raulmarindev" /></a> <a href="https://github.com/siduppal"><img src="https://github.com/siduppal.png" width="30px" alt="siduppal" /></a> <a href="https://github.com/goosecubedaddy"><img src="https://github.com/goosecubedaddy.png" width="30px" alt="goosecubedaddy" /></a> <a href="https://github.com/pleabargain"><img src="https://github.com/pleabargain.png" width="30px" alt="pleabargain" /></a>
|
<a href="https://github.com/robinicus"><img src="https://github.com/robinicus.png" width="50px" alt="robinicus" /></a> <a href="https://github.com/prompthero"><img src="https://github.com/prompthero.png" width="50px" alt="prompthero" /></a> <a href="https://github.com/crizzler"><img src="https://github.com/crizzler.png" width="50px" alt="crizzler" /></a> <a href="https://github.com/tob-le-rone"><img src="https://github.com/tob-le-rone.png" width="50px" alt="tob-le-rone" /></a> <a href="https://github.com/FSTatSBS"><img src="https://github.com/FSTatSBS.png" width="50px" alt="FSTatSBS" /></a> <a href="https://github.com/toverly1"><img src="https://github.com/toverly1.png" width="50px" alt="toverly1" /></a> <a href="https://github.com/ddtarazona"><img src="https://github.com/ddtarazona.png" width="50px" alt="ddtarazona" /></a> <a href="https://github.com/Nalhos"><img src="https://github.com/Nalhos.png" width="50px" alt="Nalhos" /></a> <a href="https://github.com/Kazamario"><img src="https://github.com/Kazamario.png" width="50px" alt="Kazamario" /></a> <a href="https://github.com/pingbotan"><img src="https://github.com/pingbotan.png" width="50px" alt="pingbotan" /></a> <a href="https://github.com/indoor47"><img src="https://github.com/indoor47.png" width="50px" alt="indoor47" /></a> <a href="https://github.com/AuroraHolding"><img src="https://github.com/AuroraHolding.png" width="50px" alt="AuroraHolding" /></a> <a href="https://github.com/kreativai"><img src="https://github.com/kreativai.png" width="50px" alt="kreativai" /></a> <a href="https://github.com/hunteraraujo"><img src="https://github.com/hunteraraujo.png" width="50px" alt="hunteraraujo" /></a> <a href="https://github.com/Explorergt92"><img src="https://github.com/Explorergt92.png" width="50px" alt="Explorergt92" /></a> <a href="https://github.com/judegomila"><img src="https://github.com/judegomila.png" width="50px" alt="judegomila" /></a>
|
||||||
|
<a href="https://github.com/thepok"><img src="https://github.com/thepok.png" width="50px" alt="thepok" /></a>
|
||||||
|
<a href="https://github.com/SpacingLily"><img src="https://github.com/SpacingLily.png" width="50px" alt="SpacingLily" /></a> <a href="https://github.com/merwanehamadi"><img src="https://github.com/merwanehamadi.png" width="50px" alt="merwanehamadi" /></a> <a href="https://github.com/m"><img src="https://github.com/m.png" width="50px" alt="m" /></a> <a href="https://github.com/zkonduit"><img src="https://github.com/zkonduit.png" width="50px" alt="zkonduit" /></a> <a href="https://github.com/maxxflyer"><img src="https://github.com/maxxflyer.png" width="50px" alt="maxxflyer" /></a> <a href="https://github.com/tekelsey"><img src="https://github.com/tekelsey.png" width="50px" alt="tekelsey" /></a> <a href="https://github.com/digisomni"><img src="https://github.com/digisomni.png" width="50px" alt="digisomni" /></a> <a href="https://github.com/nocodeclarity"><img src="https://github.com/nocodeclarity.png" width="50px" alt="nocodeclarity" /></a> <a href="https://github.com/tjarmain"><img src="https://github.com/tjarmain.png" width="50px" alt="tjarmain" /></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
@@ -43,6 +42,7 @@ Your support is greatly appreciated
|
|||||||
- [Setting up environment variables](#setting-up-environment-variables)
|
- [Setting up environment variables](#setting-up-environment-variables)
|
||||||
- [💀 Continuous Mode ⚠️](#-continuous-mode-️)
|
- [💀 Continuous Mode ⚠️](#-continuous-mode-️)
|
||||||
- [GPT3.5 ONLY Mode](#gpt35-only-mode)
|
- [GPT3.5 ONLY Mode](#gpt35-only-mode)
|
||||||
|
- [🖼 Image Generation](#image-generation)
|
||||||
- [⚠️ Limitations](#️-limitations)
|
- [⚠️ Limitations](#️-limitations)
|
||||||
- [🛡 Disclaimer](#-disclaimer)
|
- [🛡 Disclaimer](#-disclaimer)
|
||||||
- [🐦 Connect with Us on Twitter](#-connect-with-us-on-twitter)
|
- [🐦 Connect with Us on Twitter](#-connect-with-us-on-twitter)
|
||||||
@@ -203,6 +203,7 @@ Or you can set them in the `.env` file.
|
|||||||
|
|
||||||
1. View memory usage by using the `--debug` flag :)
|
1. View memory usage by using the `--debug` flag :)
|
||||||
|
|
||||||
|
|
||||||
## 💀 Continuous Mode ⚠️
|
## 💀 Continuous Mode ⚠️
|
||||||
Run the AI **without** user authorisation, 100% automated.
|
Run the AI **without** user authorisation, 100% automated.
|
||||||
Continuous mode is not recommended.
|
Continuous mode is not recommended.
|
||||||
@@ -221,6 +222,15 @@ If you don't have access to the GPT4 api, this mode will allow you to use Auto-G
|
|||||||
python scripts/main.py --gpt3only
|
python scripts/main.py --gpt3only
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 🖼 Image Generation
|
||||||
|
By default, Auto-GPT uses DALL-e for image generation. To use Stable Diffusion, a [HuggingFace API Token](https://huggingface.co/settings/tokens) is required.
|
||||||
|
|
||||||
|
Once you have a token, set these variables in your `.env`:
|
||||||
|
```
|
||||||
|
IMAGE_PROVIDER=sd
|
||||||
|
HUGGINGFACE_API_TOKEN="YOUR_HUGGINGFACE_API_TOKEN"
|
||||||
|
```
|
||||||
|
|
||||||
## ⚠️ Limitations
|
## ⚠️ Limitations
|
||||||
This experiment aims to showcase the potential of GPT-4 but comes with some limitations:
|
This experiment aims to showcase the potential of GPT-4 but comes with some limitations:
|
||||||
|
|
||||||
|
|||||||
@@ -13,4 +13,5 @@ duckduckgo-search
|
|||||||
google-api-python-client #(https://developers.google.com/custom-search/v1/overview)
|
google-api-python-client #(https://developers.google.com/custom-search/v1/overview)
|
||||||
pinecone-client==2.2.1
|
pinecone-client==2.2.1
|
||||||
redis
|
redis
|
||||||
orjson
|
orjson
|
||||||
|
Pillow
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import yaml
|
import yaml
|
||||||
import data
|
import data
|
||||||
|
import os
|
||||||
|
|
||||||
class AIConfig:
|
class AIConfig:
|
||||||
def __init__(self, ai_name="", ai_role="", ai_goals=[]):
|
def __init__(self, ai_name="", ai_role="", ai_goals=[]):
|
||||||
@@ -9,7 +9,7 @@ class AIConfig:
|
|||||||
self.ai_goals = ai_goals
|
self.ai_goals = ai_goals
|
||||||
|
|
||||||
# Soon this will go in a folder where it remembers more stuff about the run(s)
|
# Soon this will go in a folder where it remembers more stuff about the run(s)
|
||||||
SAVE_FILE = "../ai_settings.yaml"
|
SAVE_FILE = os.path.join(os.path.dirname(__file__), '..', 'ai_settings.yaml')
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def load(cls, config_file=SAVE_FILE):
|
def load(cls, config_file=SAVE_FILE):
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import ai_functions as ai
|
|||||||
from file_operations import read_file, write_to_file, append_to_file, delete_file, search_files
|
from file_operations import read_file, write_to_file, append_to_file, delete_file, search_files
|
||||||
from execute_code import execute_python_file
|
from execute_code import execute_python_file
|
||||||
from json_parser import fix_and_parse_json
|
from json_parser import fix_and_parse_json
|
||||||
|
from image_gen import generate_image
|
||||||
from duckduckgo_search import ddg
|
from duckduckgo_search import ddg
|
||||||
from googleapiclient.discovery import build
|
from googleapiclient.discovery import build
|
||||||
from googleapiclient.errors import HttpError
|
from googleapiclient.errors import HttpError
|
||||||
@@ -103,6 +104,8 @@ def execute_command(command_name, arguments):
|
|||||||
return ai.write_tests(arguments["code"], arguments.get("focus"))
|
return ai.write_tests(arguments["code"], arguments.get("focus"))
|
||||||
elif command_name == "execute_python_file": # Add this command
|
elif command_name == "execute_python_file": # Add this command
|
||||||
return execute_python_file(arguments["file"])
|
return execute_python_file(arguments["file"])
|
||||||
|
elif command_name == "generate_image":
|
||||||
|
return generate_image(arguments["prompt"])
|
||||||
elif command_name == "task_complete":
|
elif command_name == "task_complete":
|
||||||
shutdown()
|
shutdown()
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -58,6 +58,9 @@ class Config(metaclass=Singleton):
|
|||||||
self.pinecone_api_key = os.getenv("PINECONE_API_KEY")
|
self.pinecone_api_key = os.getenv("PINECONE_API_KEY")
|
||||||
self.pinecone_region = os.getenv("PINECONE_ENV")
|
self.pinecone_region = os.getenv("PINECONE_ENV")
|
||||||
|
|
||||||
|
self.image_provider = os.getenv("IMAGE_PROVIDER")
|
||||||
|
self.huggingface_api_token = os.getenv("HUGGINGFACE_API_TOKEN")
|
||||||
|
|
||||||
# User agent headers to use when browsing web
|
# User agent headers to use when browsing web
|
||||||
# Some websites might just completely deny request with an error code if no user agent was found.
|
# Some websites might just completely deny request with an error code if no user agent was found.
|
||||||
self.user_agent_header = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
|
self.user_agent_header = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ COMMANDS:
|
|||||||
17. Write Tests: "write_tests", args: "code": "<full_code_string>", "focus": "<list_of_focus_areas>"
|
17. Write Tests: "write_tests", args: "code": "<full_code_string>", "focus": "<list_of_focus_areas>"
|
||||||
18. Execute Python File: "execute_python_file", args: "file": "<file>"
|
18. Execute Python File: "execute_python_file", args: "file": "<file>"
|
||||||
19. Task Complete (Shutdown): "task_complete", args: "reason": "<reason>"
|
19. Task Complete (Shutdown): "task_complete", args: "reason": "<reason>"
|
||||||
|
20. Generate Image: "generate_image", args: "prompt": "<prompt>"
|
||||||
|
|
||||||
RESOURCES:
|
RESOURCES:
|
||||||
|
|
||||||
|
|||||||
57
scripts/image_gen.py
Normal file
57
scripts/image_gen.py
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
import requests
|
||||||
|
import io
|
||||||
|
import os.path
|
||||||
|
from PIL import Image
|
||||||
|
from config import Config
|
||||||
|
import uuid
|
||||||
|
import openai
|
||||||
|
from base64 import b64decode
|
||||||
|
|
||||||
|
cfg = Config()
|
||||||
|
|
||||||
|
working_directory = "auto_gpt_workspace"
|
||||||
|
|
||||||
|
def generate_image(prompt):
|
||||||
|
|
||||||
|
filename = str(uuid.uuid4()) + ".jpg"
|
||||||
|
|
||||||
|
# DALL-E
|
||||||
|
if cfg.image_provider == 'dalle':
|
||||||
|
|
||||||
|
openai.api_key = cfg.openai_api_key
|
||||||
|
|
||||||
|
response = openai.Image.create(
|
||||||
|
prompt=prompt,
|
||||||
|
n=1,
|
||||||
|
size="256x256",
|
||||||
|
response_format="b64_json",
|
||||||
|
)
|
||||||
|
|
||||||
|
print("Image Generated for prompt:" + prompt)
|
||||||
|
|
||||||
|
image_data = b64decode(response["data"][0]["b64_json"])
|
||||||
|
|
||||||
|
with open(working_directory + "/" + filename, mode="wb") as png:
|
||||||
|
png.write(image_data)
|
||||||
|
|
||||||
|
return "Saved to disk:" + filename
|
||||||
|
|
||||||
|
# STABLE DIFFUSION
|
||||||
|
elif cfg.image_provider == 'sd':
|
||||||
|
|
||||||
|
API_URL = "https://api-inference.huggingface.co/models/CompVis/stable-diffusion-v1-4"
|
||||||
|
headers = {"Authorization": "Bearer " + cfg.huggingface_api_token}
|
||||||
|
|
||||||
|
response = requests.post(API_URL, headers=headers, json={
|
||||||
|
"inputs": prompt,
|
||||||
|
})
|
||||||
|
|
||||||
|
image = Image.open(io.BytesIO(response.content))
|
||||||
|
print("Image Generated for prompt:" + prompt)
|
||||||
|
|
||||||
|
image.save(os.path.join(working_directory, filename))
|
||||||
|
|
||||||
|
return "Saved to disk:" + filename
|
||||||
|
|
||||||
|
else:
|
||||||
|
return "No Image Provider Set"
|
||||||
Reference in New Issue
Block a user