forked from daveshap/ImperativeService
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimperative_microservice.py
More file actions
135 lines (110 loc) · 4.43 KB
/
imperative_microservice.py
File metadata and controls
135 lines (110 loc) · 4.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import requests
from time import time
from uuid import uuid4
import numpy as np
import re
import os
import openai
from time import time,sleep
def open_file(filepath):
with open(filepath, 'r', encoding='utf-8') as infile:
return infile.read()
def save_file(filepath, content):
with open(filepath, 'w', encoding='utf-8') as outfile:
outfile.write(content)
openai.api_key = open_file('openaiapikey.txt')
service_name = 'heuristic_imperatives'
content_prefix = 'Heuristic imperatives: '
tempo = 30
def gpt3_completion(prompt, engine='text-davinci-002', temp=0.7, top_p=1.0, tokens=1000, freq_pen=0.0, pres_pen=0.0, stop=['asdfasdf', 'asdasdf']):
max_retry = 5
retry = 0
prompt = prompt.encode(encoding='ASCII',errors='ignore').decode()
while True:
try:
response = openai.Completion.create(
engine=engine,
prompt=prompt,
temperature=temp,
max_tokens=tokens,
top_p=top_p,
frequency_penalty=freq_pen,
presence_penalty=pres_pen,
stop=stop)
text = response['choices'][0]['text'].strip()
#text = re.sub('\s+', ' ', text)
filename = '%s_gpt3.txt' % time()
save_file('gpt3_logs/%s' % filename, prompt + '\n\n==========\n\n' + text)
return text
except Exception as oops:
retry += 1
if retry >= max_retry:
return "GPT3 error: %s" % oops
print('Error communicating with OpenAI:', oops)
sleep(1)
def nexus_send(payload): # REQUIRED: content
url = 'http://127.0.0.1:8888/add'
payload['content'] = content_prefix + payload['content']
payload['microservice'] = 'heuristic_imperatives'
payload['model'] = 'text-davinci-002'
payload['type'] = 'core objective functions'
response = requests.request(method='POST', url=url, json=payload)
print(response.text)
def nexus_search(payload):
url = 'http://127.0.0.1:8888/search'
response = requests.request(method='POST', url=url, json=payload)
return response.json()
def nexus_bound(payload):
url = 'http://127.0.0.1:8888/bound'
response = requests.request(method='POST', url=url, json=payload)
return response.json()
def nexus_match():
url = 'http://127.0.0.1:8888/match'
response = requests.request(method='POST', url=url)
return response.json()
def nexus_recent():
url = 'http://127.0.0.1:8888/recent'
response = requests.request(method='POST', url=url)
return response.json()
def save_and_send(content, prefix, tag):
filename = '%s_%s.txt' % (time(), tag)
content = prefix + content
save_file('logs/' + filename, content)
nexus_send({'content': content})
if __name__ == '__main__':
while True:
# get recent memories
recent = nexus_recent({'seconds': tempo})
lines = [i['content'] for i in recent]
textblock = ' '.join(lines)
# TODO get relevant older memories too
# reduce suffering
prompt = open_file('reduce_suffering_brainstorm.txt').replace('<<BLOCK>>', textblock)
suffering = gpt3_completion(prompt)
print('\n\n', suffering)
save_and_send(suffering, 'Ideas to reduce suffering: ', 'suffering')
# increase prosperity
prompt = open_file('increase_prosperity_brainstorm.txt').replace('<<BLOCK>>', textblock)
prosperity = gpt3_completion(prompt)
save_and_send(prosperity, 'Ideas to increase prosperity: ', 'prosperity')
print('\n\n', prosperity)
# increase understanding
prompt = open_file('increase_understanding_brainstorm.txt').replace('<<BLOCK>>', textblock)
understanding = gpt3_completion(prompt)
save_and_send(understanding, 'Ideas to increase understanding: ', 'understanding')
print('\n\n', understanding)
# curiosity (ask questions)
prompt = open_file('increase_understanding_questions.txt').replace('<<BLOCK>>', textblock)
questions = gpt3_completion(prompt)
save_and_send(questions, 'Questions to increase understanding: ', 'questions')
# wait
sleep(tempo)
'''
TODO stuff
- suffering should also evaluate current situation "identify suffering, causes, predict short term and long term outcomes" etc
- prosperity should also think short and long term
- understanding should also include curiosity
Key dispositions:
- time scale (short, long term)
-
'''