clonely updates
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
|
from time import time
|
||||||
|
import urllib.parse
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
|
||||||
@@ -7,6 +8,12 @@ class AIHandler(object):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def __call__(self, text):
|
def __call__(self, text):
|
||||||
|
"""
|
||||||
|
resp = requests.get(f"https://ai.travely24.com/generate?input_query={urllib.parse.quote_plus(text)}",
|
||||||
|
headers={"accept": "application/json"},
|
||||||
|
stream=True)
|
||||||
|
"""
|
||||||
|
|
||||||
resp = requests.post("https://fast-pia.avemio.technology/chat-completion",
|
resp = requests.post("https://fast-pia.avemio.technology/chat-completion",
|
||||||
json={
|
json={
|
||||||
"session-id": "chatcmpl",
|
"session-id": "chatcmpl",
|
||||||
@@ -28,9 +35,24 @@ class AIHandler(object):
|
|||||||
"content": text
|
"content": text
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
})
|
},
|
||||||
|
headers={"accept": "application/json"},
|
||||||
|
stream=True)
|
||||||
resp = resp.json()
|
resp = resp.json()
|
||||||
return {
|
return {
|
||||||
"text": resp[0]['text'],
|
"text": resp[0]['text'],
|
||||||
"emotion": resp[0]['emotion']
|
"emotion": resp[0]['emotion']
|
||||||
}
|
}
|
||||||
|
"""
|
||||||
|
for chunk in resp.iter_content(chunk_size=1024):
|
||||||
|
if chunk:
|
||||||
|
yield str(chunk)
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
aihandler = AIHandler()
|
||||||
|
t1 = time()
|
||||||
|
for text in aihandler("Hello, how are you, what is your name?"):
|
||||||
|
print(time() - t1)
|
||||||
|
print(text)
|
||||||
|
|||||||
@@ -4,32 +4,30 @@ openai.api_key = "sk-proj-PdTVVVvYzcd6vs2qcRxpT3BlbkFJtq78XfSrzwEK2fqyOVHE"
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
|
||||||
class AIHandlerStream(object):
|
class AIHandlerNewStream(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.ai = openai.OpenAI(api_key="sk-proj-GaouEG2QuAcfAr1an2uBT3BlbkFJaIh0XVFXWrYQpJazlbeO")
|
pass
|
||||||
|
|
||||||
def __call__(self, text):
|
def __call__(self, text):
|
||||||
|
url = f"https://ai.travely24.com/generate/?prompt={text}";
|
||||||
|
response = requests.get(
|
||||||
|
url,
|
||||||
|
stream=True,
|
||||||
|
headers={"accept": "application/json"},
|
||||||
|
)
|
||||||
out = ""
|
out = ""
|
||||||
for chunk in self.ai.chat.completions.create(
|
for delta in response.iter_content(chunk_size=1024):
|
||||||
model="gpt-3.5-turbo",
|
if delta:
|
||||||
messages=[
|
out += delta.decode("utf-8")
|
||||||
{"role": "system", "content": "You are PIA. You talk with short sentences. And help people."},
|
if len(out) > 0 and out.strip()[-1] in ['.', '!', ',', '?']:
|
||||||
{"role": "user", "content": text}
|
yield out
|
||||||
], stream=True
|
out = ""
|
||||||
):
|
|
||||||
delta = chunk.choices[0].delta.content
|
|
||||||
if delta is None:
|
|
||||||
continue
|
|
||||||
out += delta
|
|
||||||
if len(out) > 0 and out[-1] in ['.', '!', ',', '?']:
|
|
||||||
yield out
|
|
||||||
out = ""
|
|
||||||
if len(out) > 0:
|
if len(out) > 0:
|
||||||
yield out
|
yield out
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
aihandler = AIHandlerStream()
|
aihandler = AIHandlerNewStream()
|
||||||
t1 = time()
|
t1 = time()
|
||||||
for text in aihandler("Hello, how are you, what is your name?"):
|
for text in aihandler("Hello, how are you, what is your name?"):
|
||||||
print(time() - t1)
|
print(time() - t1)
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
|
import spacy
|
||||||
|
|
||||||
|
# Load the language model
|
||||||
|
nlp = spacy.load("en_core_web_lg")
|
||||||
|
|
||||||
|
import sys
|
||||||
from time import sleep, time
|
from time import sleep, time
|
||||||
import logging
|
import logging
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
@@ -9,6 +15,11 @@ from flask import redirect
|
|||||||
import argparse
|
import argparse
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
|
import pandas as pd
|
||||||
|
import openai, numpy as np
|
||||||
|
openai.api_key = "sk-proj-GaouEG2QuAcfAr1an2uBT3BlbkFJaIh0XVFXWrYQpJazlbeO"
|
||||||
|
# from openai.embeddings_utils import get_embedding, cosine_similarity
|
||||||
|
|
||||||
from flask import send_file, Response, request, jsonify
|
from flask import send_file, Response, request, jsonify
|
||||||
from flask_socketio import emit
|
from flask_socketio import emit
|
||||||
from piedemo.fields.ajax_group import AjaxChatField, AjaxGroup
|
from piedemo.fields.ajax_group import AjaxChatField, AjaxGroup
|
||||||
@@ -44,9 +55,14 @@ from tqdm import tqdm
|
|||||||
|
|
||||||
from aihandler import AIHandler
|
from aihandler import AIHandler
|
||||||
from aihandler_stream import AIHandlerStream
|
from aihandler_stream import AIHandlerStream
|
||||||
|
from aihandler_new import AIHandlerNewStream
|
||||||
from pieinfer import PieInfer, render_video, construct_video
|
from pieinfer import PieInfer, render_video, construct_video
|
||||||
import torch
|
import torch
|
||||||
from TTS.api import TTS
|
from TTS.api import TTS
|
||||||
|
|
||||||
|
sys.path.append("/home/ubuntu/repo/slavaBIM")
|
||||||
|
from pages.demo import DemoPage
|
||||||
|
|
||||||
logging.getLogger('socketio').setLevel(logging.ERROR)
|
logging.getLogger('socketio').setLevel(logging.ERROR)
|
||||||
logging.getLogger('engineio').setLevel(logging.ERROR)
|
logging.getLogger('engineio').setLevel(logging.ERROR)
|
||||||
|
|
||||||
@@ -133,6 +149,7 @@ class MainPage(Page):
|
|||||||
self.r = redis.Redis(host='localhost', port=6379, decode_responses=True)
|
self.r = redis.Redis(host='localhost', port=6379, decode_responses=True)
|
||||||
self.aihandler = AIHandler()
|
self.aihandler = AIHandler()
|
||||||
self.aihandler_stream = AIHandlerStream()
|
self.aihandler_stream = AIHandlerStream()
|
||||||
|
self.aihandler_new_stream = AIHandlerNewStream()
|
||||||
|
|
||||||
self.fields = Navigation(AjaxGroup("ChatGroup", VStack([
|
self.fields = Navigation(AjaxGroup("ChatGroup", VStack([
|
||||||
HStack([
|
HStack([
|
||||||
@@ -263,8 +280,11 @@ web = Web({
|
|||||||
"": "simple",
|
"": "simple",
|
||||||
"simple": page,
|
"simple": page,
|
||||||
"nice": page,
|
"nice": page,
|
||||||
|
"secret_demo_of_c574d349": DemoPage(),
|
||||||
|
"secret_demo_of_c574dnew": DemoPage(load_new_model=True)
|
||||||
}, use_socketio_support=True)
|
}, use_socketio_support=True)
|
||||||
|
web.add_assets_directory("IFC",
|
||||||
|
"/home/ubuntu/repo/slavaBIM/data/IFC")
|
||||||
|
|
||||||
host = '0.0.0.0'
|
host = '0.0.0.0'
|
||||||
port = 8011
|
port = 8011
|
||||||
@@ -518,6 +538,150 @@ def perform_surgery(sid, duration=5):
|
|||||||
sleep(max(0., duration - (t2 - t1)))
|
sleep(max(0., duration - (t2 - t1)))
|
||||||
|
|
||||||
|
|
||||||
|
BODY_ANIMATION_DESCRIPTIONS = [
|
||||||
|
"Get on your knees",
|
||||||
|
"Show butt",
|
||||||
|
"Show ass",
|
||||||
|
"Pull back",
|
||||||
|
"Doggy style",
|
||||||
|
|
||||||
|
"Sit on ass",
|
||||||
|
"Spread legs",
|
||||||
|
"Show pussy",
|
||||||
|
"Missionary position",
|
||||||
|
"Let fuck",
|
||||||
|
|
||||||
|
"Lie on side",
|
||||||
|
"Show legs",
|
||||||
|
"Rest",
|
||||||
|
"Relax",
|
||||||
|
"Sleep",
|
||||||
|
|
||||||
|
"Stand up",
|
||||||
|
"Showcase yourself",
|
||||||
|
"Show yourself",
|
||||||
|
"Show your boobs",
|
||||||
|
"Touch your boobs",
|
||||||
|
|
||||||
|
"Make a blowjob",
|
||||||
|
"On your knees",
|
||||||
|
"Sit on the dildo",
|
||||||
|
"Kiss my ass",
|
||||||
|
"Be on top"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
resp = page.aihandler_stream.ai.embeddings.create(input=BODY_ANIMATION_DESCRIPTIONS,
|
||||||
|
model="text-embedding-3-small")
|
||||||
|
BODY_ANIMATION_EMBEDDINGS = np.array(list(map(lambda x: x.embedding,
|
||||||
|
resp.data)))
|
||||||
|
|
||||||
|
|
||||||
|
def to_back_view(sid):
|
||||||
|
emit("io_set_view",
|
||||||
|
[{"type": "back"}],
|
||||||
|
sid=sid)
|
||||||
|
|
||||||
|
|
||||||
|
def to_front_view(sid):
|
||||||
|
emit("io_set_view",
|
||||||
|
[{"type": "front"}],
|
||||||
|
sid=sid)
|
||||||
|
|
||||||
|
|
||||||
|
def to_up_to_down_view(sid):
|
||||||
|
emit("io_set_view",
|
||||||
|
[{"type": "up_to_down"}],
|
||||||
|
sid=sid)
|
||||||
|
|
||||||
|
|
||||||
|
@io.on("io_set_text_body")
|
||||||
|
def io_set_text_body(data):
|
||||||
|
data = json.loads(data)
|
||||||
|
data = data[0]
|
||||||
|
sid = None
|
||||||
|
print(data, file=sys.stderr)
|
||||||
|
if "text" not in data:
|
||||||
|
emit("io_error", {"message": "Text not found"},
|
||||||
|
to=sid)
|
||||||
|
return
|
||||||
|
|
||||||
|
text = data["text"]
|
||||||
|
user_id = data.get('user_id')
|
||||||
|
print(user_id)
|
||||||
|
emb = page.aihandler_stream.ai.embeddings.create(input=[text],
|
||||||
|
model="text-embedding-3-small")
|
||||||
|
|
||||||
|
idx = int(np.argmax(np.sum(np.array([emb.data[0].embedding]) * BODY_ANIMATION_EMBEDDINGS, axis=-1)))
|
||||||
|
|
||||||
|
animations_durations = {
|
||||||
|
1: 13,
|
||||||
|
2: 9.33,
|
||||||
|
3: 10.5,
|
||||||
|
4: 7.52,
|
||||||
|
5: 10,
|
||||||
|
}
|
||||||
|
print("Text: ", text, "\n",
|
||||||
|
"Detected:", BODY_ANIMATION_DESCRIPTIONS[idx], "\n",
|
||||||
|
"Index: ", idx, "\n")
|
||||||
|
# to_body_view(sid)
|
||||||
|
|
||||||
|
if 1 + idx // 5 == 1:
|
||||||
|
to_back_view(sid)
|
||||||
|
elif 1 + idx // 5 == 3:
|
||||||
|
to_up_to_down_view(sid)
|
||||||
|
else:
|
||||||
|
to_front_view(sid)
|
||||||
|
|
||||||
|
emit("io_set_body_animation",
|
||||||
|
[{
|
||||||
|
"index": 1 + idx // 5,
|
||||||
|
"timestamp": 0
|
||||||
|
}],
|
||||||
|
to=sid)
|
||||||
|
"""
|
||||||
|
start_speaking(text,
|
||||||
|
user_id=user_id,
|
||||||
|
sid=sid)
|
||||||
|
"""
|
||||||
|
sleep(animations_durations[1 + idx // 5] // 2)
|
||||||
|
to_front_view(sid)
|
||||||
|
sleep(animations_durations[1 + idx // 5] // 2)
|
||||||
|
|
||||||
|
emit("io_finish", {}, to=sid)
|
||||||
|
|
||||||
|
|
||||||
|
def start_speaking(text, user_id, sid):
|
||||||
|
TEXTS[user_id].append({
|
||||||
|
"id": "user",
|
||||||
|
"text": text
|
||||||
|
})
|
||||||
|
voice = SPEAKER.get(user_id, "voice1")
|
||||||
|
|
||||||
|
if sid not in head_memories:
|
||||||
|
head_memories[sid] = get_head_memory()
|
||||||
|
head_memory = head_memories[sid]
|
||||||
|
# output_texts = [page.aihandler(text)['text']]
|
||||||
|
output_texts = page.aihandler_stream(text)
|
||||||
|
# output_texts = page.aihandler_new_stream(text)
|
||||||
|
bot_text = ""
|
||||||
|
for output_text in output_texts:
|
||||||
|
sign = [2 * (random.random() > 0.5) - 1
|
||||||
|
for _ in range(8)]
|
||||||
|
head_memory = perform_on_text(output_text, sid, head_memory,
|
||||||
|
sign=sign,
|
||||||
|
voice=voice)
|
||||||
|
bot_text += " " + output_text
|
||||||
|
print("SURGERY STARTED!")
|
||||||
|
# perform_surgery(sid)
|
||||||
|
print("SURGERY ENDED!")
|
||||||
|
TEXTS[user_id].append({
|
||||||
|
"id": "bot",
|
||||||
|
"text": bot_text
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@io.on("io_set_text")
|
@io.on("io_set_text")
|
||||||
def io_set_text(data):
|
def io_set_text(data):
|
||||||
data = json.loads(data)
|
data = json.loads(data)
|
||||||
@@ -537,32 +701,9 @@ def io_set_text(data):
|
|||||||
return"""
|
return"""
|
||||||
user_id = data.get('user_id')
|
user_id = data.get('user_id')
|
||||||
print(user_id)
|
print(user_id)
|
||||||
TEXTS[user_id].append({
|
start_speaking(text,
|
||||||
"id": "user",
|
user_id=user_id,
|
||||||
"text": text
|
sid=sid)
|
||||||
})
|
|
||||||
voice = SPEAKER.get(user_id, "voice1")
|
|
||||||
|
|
||||||
if sid not in head_memories:
|
|
||||||
head_memories[sid] = get_head_memory()
|
|
||||||
head_memory = head_memories[sid]
|
|
||||||
# output_texts = [page.aihandler(text)['text']]
|
|
||||||
output_texts = page.aihandler_stream(text)
|
|
||||||
bot_text = ""
|
|
||||||
for output_text in output_texts:
|
|
||||||
sign = [2 * (random.random() > 0.5) - 1
|
|
||||||
for _ in range(8)]
|
|
||||||
head_memory = perform_on_text(output_text, sid, head_memory,
|
|
||||||
sign=sign,
|
|
||||||
voice=voice)
|
|
||||||
bot_text += " " + output_text
|
|
||||||
print("SURGERY STARTED!")
|
|
||||||
# perform_surgery(sid)
|
|
||||||
print("SURGERY ENDED!")
|
|
||||||
TEXTS[user_id].append({
|
|
||||||
"id": "bot",
|
|
||||||
"text": bot_text
|
|
||||||
})
|
|
||||||
emit("io_finish", {}, to=sid)
|
emit("io_finish", {}, to=sid)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import requests
|
||||||
|
url = "https://ai.travely24.com/generate/?prompt=Hi, what is your name?";
|
||||||
|
response = requests.get(
|
||||||
|
url,
|
||||||
|
stream=True,
|
||||||
|
headers={"accept": "application/json"},
|
||||||
|
)
|
||||||
|
|
||||||
|
for chunk in response.iter_content(chunk_size=1024):
|
||||||
|
if chunk:
|
||||||
|
print(str(chunk, encoding="utf-8"), end="")
|
||||||
|
|||||||
Reference in New Issue
Block a user