Initial GAF

This commit is contained in:
adamoutler 2023-02-05 21:28:41 +00:00
commit 6f4f7f8ac3
11 changed files with 168 additions and 0 deletions

29
.devcontainer/devcontainer.json Executable file
View File

@ -0,0 +1,29 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
{
"name": "Debian",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "mcr.microsoft.com/devcontainers/base:bullseye",
"features": {
"ghcr.io/devcontainers/features/python:1": {}
},
"onCreateCommand": "pip install openai; apt update; apt install git",
"customizations": {
"vscode": {
"extensions": [
"pomdtr.secrets"
]
}
}
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Configure tool-specific properties.
// "customizations": {},
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}

5
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,5 @@
{
"recommendations": [
"pomdtr.secrets"
]
}

5
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,5 @@
{
"secrets.enabledFolders": [
"aidgaf"
]
}

0
README.md Normal file
View File

View File

@ -0,0 +1,3 @@
name = 'aidgaf'

View File

@ -0,0 +1,90 @@
import json
import requests
from http.server import BaseHTTPRequestHandler, HTTPServer
import time
from datetime import datetime
import openai
import random
import settings
openai.organization = "org-hNNV1yHjZp7T3pn5pdZWaKLm"
#print(openai.Model.list())
URL="https://api.openai.com/v1/completions"
PROMPTS=["Say \"USERNAME does not give a fuck\" in a thoughtful and clever paragraph of 5 sentences.",
"Say \"USERNAME does not give a fuck\" in a Dr Suess poem.",
"Tell me all about how much \"USERNAME does not give a fuck\" using your most colorful words."]
DATA = {"model": "text-davinci-003",
"prompt": PROMPTS[0],
"temperature":1,
"max_tokens": 200
}
request_headers={"Authorization": "Bearer "+settings.APIKEY,"Content-Type": "application/json"}
class IDGAFServer(BaseHTTPRequestHandler):
def do_PATCH(self):
# print("Request: "+self.request+ " "+webServer.get_request())
request_body=self.rfile.read(int(self.headers.get('Content-Length')))
command=json.loads(request_body)
print(command)
if command['message']['command'] == 'aidgaf':
[responseCode,response_body]=parse_idgaf_request(command)
self.handle_response(responseCode,response_body)
print("sending:"+response_body)
def handle_response(self,code,body):
self.send_response(code)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(bytes(body,"UTF-8"))
def get_response_base_object(text):
resultObject={}
resultObject["message"]={}
resultObject["message"]["data"]={}
resultObject["message"]["data"]["resultObject"]=text
resultObject["timestamp"]=datetime.utcnow().timestamp()
return resultObject
def parse_idgaf_request(command):
the_data=get_prompt(command)
gpt_response=requests.post(URL, json=the_data, headers=request_headers)
print(gpt_response)
response_text=gpt_response.json()['choices'][0]['text'].strip()
obj=get_response_base_object(response_text)
json_result=json.dumps(obj)
return [gpt_response.status_code,json_result]
def get_prompt(command):
my_prompt=random.choice(PROMPTS)
my_prompt=my_prompt.replace("USERNAME",command['message']['data']['username'])
print("Prompt selected: "+my_prompt)
the_data=DATA
the_data["prompt"]=my_prompt
return the_data
value='{"service": "papa", "message": {"command": "aidgaf", "data": {"username": "AdamOutler"}, "timestamp": 1675373229}, "hash": "de08e85b8afc3b7d257fa559fd1dd295838ea1387f1e0fa75ceb11d9da81e59fadfc878d028281dfb739002bae818b89a8363e49d68e923874c969716a90f8e3"}'
if __name__ == "__main__":
print(parse_idgaf_request(command=json.loads(value)))
#curl https://api.openai.com/v1/completions \
# -H "Content-Type: application/json" \
# -H "Authorization: Bearer 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" \
# -d '{"model": "text-curie-001",
# "prompt": "Say \"Adam does not give a fuck\" in a thoughtful and clever prose consisting of one to five paragraphs.",
# "temperature":1, "max_tokens": 500}'
# |jq -r .choices[0].text
# curl -X PATCH 127.0.0.1:8087 -d '{"message":{"command":"aidgaf","data":{"username":"AdamOutler"}}}'
#2,500,000 tokens = $5

View File

@ -0,0 +1,17 @@
import idgaf
from idgaf import IDGAFServer
from http.server import HTTPServer
import settings
if __name__ == "__main__":
webServer = HTTPServer((settings.HOSTNAME, settings.SERVERPORT), idgaf.IDGAFServer)
print("Server started http://%s:%s" % (settings.HOSTNAME, settings.SERVERPORT))
try:
webServer.serve_forever()
except KeyboardInterrupt:
pass
webServer.server_close()
print("Server stopped.")

View File

@ -0,0 +1,7 @@
import os
#The hostname used by this app
HOSTNAME:str = os.getenv('HOSTNAME') #localhost
#The port to broadcast the server
SERVERPORT:int = int(os.getenv('SERVERPORT')) #8087
#The API key for OpenAI
APIKEY:str = os.getenv('APIKEY') #secret key

12
src/aidgaf/setup.py Normal file
View File

@ -0,0 +1,12 @@
from setuptools import setup, find_namespace_packages
setup(
name='aidgaf',
version='1',
description='',
long_description='',
author='Adam Outler',
author_email='adamoutler@gmail.com',
license='IDGAF License',
packages=find_namespace_packages(include=['aidgaf-server.*'])
)