|
|
from functools import cache |
|
|
import requests |
|
|
import os |
|
|
from typing import Any |
|
|
from pgsoft.pgdate.date_utils import beijing |
|
|
import json |
|
|
|
|
|
|
|
|
def post_to_pgai_helper(command: str) -> Any: |
|
|
myobj = { |
|
|
"code": os.getenv("pgai_code"), |
|
|
"command": command, |
|
|
} |
|
|
|
|
|
header = {'accept': 'application/json', 'Content-Type': 'application/json'} |
|
|
url_base = "https://steveagi-pgai.hf.space/games/house/nlp" |
|
|
url_read = f"{url_base}/r" |
|
|
|
|
|
try: |
|
|
res = requests.post(url_read, headers=header, json=myobj) |
|
|
if res.status_code == 200: |
|
|
print(res.text) |
|
|
return res.text |
|
|
else: |
|
|
print(res.text) |
|
|
return None |
|
|
except Exception as e: |
|
|
print(e) |
|
|
return None |
|
|
|
|
|
|
|
|
from_cache = True |
|
|
|
|
|
def call_pgai(service, game, functionality, nlp_command, url, hf_token): |
|
|
calling_start = beijing() |
|
|
print(f"calling ai starts at {calling_start}") |
|
|
try: |
|
|
res = post_to_pgai_helper(nlp_command) |
|
|
except Exception as e: |
|
|
return ( |
|
|
f"{type(e)}, {str(e)}. \nyou may want to make " |
|
|
+ "sure your hf_token is correct" |
|
|
) |
|
|
calling_end = beijing() |
|
|
timecost = calling_end.timestamp() - calling_start.timestamp() |
|
|
print(f"calling ai ends at {calling_end}, costs {timecost:.2f}s") |
|
|
global from_cache |
|
|
from_cache = False |
|
|
if res is not None: |
|
|
outp = json.loads(res) |
|
|
return outp |
|
|
else: |
|
|
return None |
|
|
|