diff --git a/.gitignore b/.gitignore index 0881ab7..5268476 100644 --- a/.gitignore +++ b/.gitignore @@ -174,3 +174,4 @@ backends/nserver/venv backends/nserver/cache backends/nserver/modules/image_upscale/weights cache/ +cookies_snapshot/satoshi2077@protonmail.com.json diff --git a/main.py b/main.py index f10f666..e4ea69e 100644 --- a/main.py +++ b/main.py @@ -7,7 +7,7 @@ from nostr_dvm.bot import Bot from nostr_dvm.tasks import videogeneration_replicate_svd, imagegeneration_replicate_sdxl, textgeneration_llmlite, \ trending_notes_nostrband, discovery_inactive_follows, translation_google, textextraction_pdf, \ translation_libretranslate, textextraction_google, convert_media, imagegeneration_openai_dalle, texttospeech, \ - imagegeneration_sd21_mlx, advanced_search + imagegeneration_sd21_mlx, advanced_search, textgeneration_huggingchat from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.backend_utils import keep_alive from nostr_dvm.utils.definitions import EventDefinitions @@ -156,6 +156,10 @@ def playground(): mlx.run() + hugginchat = textgeneration_huggingchat.build_example("Huggingchat", "hugginchat", admin_config) + bot_config.SUPPORTED_DVMS.append(hugginchat) + hugginchat.run() + # Run the bot Bot(bot_config) # Keep the main function alive for libraries that require it, like openai diff --git a/nostr_dvm/interfaces/dvmtaskinterface.py b/nostr_dvm/interfaces/dvmtaskinterface.py index 5deaf3c..a619eaf 100644 --- a/nostr_dvm/interfaces/dvmtaskinterface.py +++ b/nostr_dvm/interfaces/dvmtaskinterface.py @@ -1,6 +1,7 @@ import json import os import subprocess +import time from subprocess import run import sys from sys import platform @@ -9,7 +10,7 @@ from venv import create from nostr_sdk import Keys from nostr_dvm.dvm import DVM from nostr_dvm.utils.admin_utils import AdminConfig -from nostr_dvm.utils.dvmconfig import DVMConfig +from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag from nostr_dvm.utils.output_utils import post_process_result @@ -134,3 +135,11 @@ class DVMTaskInterface: with open(os.path.abspath(output), 'w') as f: f.write(result) # f.close() + + +def process_venv(identifier): + args = DVMTaskInterface.process_args() + dvm_config = build_default_config(args.identifier) + dvm = identifier(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) + result = dvm.process(json.loads(args.request)) + DVMTaskInterface.write_output(result, args.output) diff --git a/nostr_dvm/tasks/advanced_search.py b/nostr_dvm/tasks/advanced_search.py index 75af26d..4336fd1 100644 --- a/nostr_dvm/tasks/advanced_search.py +++ b/nostr_dvm/tasks/advanced_search.py @@ -3,7 +3,7 @@ import os from datetime import timedelta from nostr_sdk import Client, Timestamp, PublicKey, Tag, Keys, Options, SecretKey -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -176,13 +176,5 @@ def build_example(name, identifier, admin_config): admin_config=admin_config) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = AdvancedSearch(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(AdvancedSearch) diff --git a/nostr_dvm/tasks/convert_media.py b/nostr_dvm/tasks/convert_media.py index 735fc00..cec1441 100644 --- a/nostr_dvm/tasks/convert_media.py +++ b/nostr_dvm/tasks/convert_media.py @@ -1,6 +1,6 @@ import json import os -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -101,13 +101,5 @@ def build_example(name, identifier, admin_config): admin_config=admin_config) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = MediaConverter(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(MediaConverter) diff --git a/nostr_dvm/tasks/discovery_inactive_follows.py b/nostr_dvm/tasks/discovery_inactive_follows.py index 9ca8653..01ac885 100644 --- a/nostr_dvm/tasks/discovery_inactive_follows.py +++ b/nostr_dvm/tasks/discovery_inactive_follows.py @@ -5,7 +5,7 @@ from threading import Thread from nostr_sdk import Client, Timestamp, PublicKey, Tag, Keys, Options, SecretKey -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -205,13 +205,5 @@ def build_example(name, identifier, admin_config): admin_config=admin_config) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = DiscoverInactiveFollows(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(DiscoverInactiveFollows) diff --git a/nostr_dvm/tasks/imagegeneration_openai_dalle.py b/nostr_dvm/tasks/imagegeneration_openai_dalle.py index 8dd584e..69f119a 100644 --- a/nostr_dvm/tasks/imagegeneration_openai_dalle.py +++ b/nostr_dvm/tasks/imagegeneration_openai_dalle.py @@ -6,7 +6,7 @@ from io import BytesIO import requests from PIL import Image -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -152,17 +152,5 @@ def build_example(name, identifier, admin_config): return ImageGenerationDALLE(name=name, dvm_config=dvm_config, nip89config=nip89config, admin_config=admin_config) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = ImageGenerationDALLE(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = "" - while result == "": - result = dvm.process(json.loads(args.request)) - time.sleep(10) - - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(ImageGenerationDALLE) diff --git a/nostr_dvm/tasks/imagegeneration_replicate_sdxl.py b/nostr_dvm/tasks/imagegeneration_replicate_sdxl.py index b76639b..f9b83c1 100644 --- a/nostr_dvm/tasks/imagegeneration_replicate_sdxl.py +++ b/nostr_dvm/tasks/imagegeneration_replicate_sdxl.py @@ -4,7 +4,7 @@ from io import BytesIO import requests from PIL import Image -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -145,13 +145,5 @@ def build_example(name, identifier, admin_config): admin_config=admin_config) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = ImageGenerationReplicateSDXL(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(ImageGenerationReplicateSDXL) diff --git a/nostr_dvm/tasks/imagegeneration_sd21_mlx.py b/nostr_dvm/tasks/imagegeneration_sd21_mlx.py index 5524958..9330345 100644 --- a/nostr_dvm/tasks/imagegeneration_sd21_mlx.py +++ b/nostr_dvm/tasks/imagegeneration_sd21_mlx.py @@ -3,7 +3,7 @@ import os from PIL import Image from tqdm import tqdm -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -174,13 +174,5 @@ def build_example(name, identifier, admin_config): admin_config=admin_config) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = ImageGenerationMLX(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(ImageGenerationMLX) diff --git a/nostr_dvm/tasks/imagegeneration_sdxl.py b/nostr_dvm/tasks/imagegeneration_sdxl.py index 1a2704a..dbe5bb7 100644 --- a/nostr_dvm/tasks/imagegeneration_sdxl.py +++ b/nostr_dvm/tasks/imagegeneration_sdxl.py @@ -2,7 +2,7 @@ import json from multiprocessing.pool import ThreadPool from nostr_dvm.backends.nova_server.utils import check_server_status, send_request_to_server -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag @@ -194,13 +194,5 @@ def build_example(name, identifier, admin_config, server_address, default_model= admin_config=admin_config, options=options) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = ImageGenerationSDXL(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(ImageGenerationSDXL) diff --git a/nostr_dvm/tasks/imagegeneration_sdxlimg2img.py b/nostr_dvm/tasks/imagegeneration_sdxlimg2img.py index f9d7b44..a7fa70d 100644 --- a/nostr_dvm/tasks/imagegeneration_sdxlimg2img.py +++ b/nostr_dvm/tasks/imagegeneration_sdxlimg2img.py @@ -2,7 +2,7 @@ import json from multiprocessing.pool import ThreadPool from nostr_dvm.backends.nova_server.utils import check_server_status, send_request_to_server -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag @@ -223,13 +223,5 @@ def build_example(name, identifier, admin_config, server_address, default_lora=" admin_config=admin_config, options=options) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = ImageGenerationSDXLIMG2IMG(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(ImageGenerationSDXLIMG2IMG) diff --git a/nostr_dvm/tasks/imageinterrogator.py b/nostr_dvm/tasks/imageinterrogator.py index b37cca7..a1c3374 100644 --- a/nostr_dvm/tasks/imageinterrogator.py +++ b/nostr_dvm/tasks/imageinterrogator.py @@ -2,7 +2,7 @@ import json from multiprocessing.pool import ThreadPool from nostr_dvm.backends.nova_server.utils import check_server_status, send_request_to_server -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag @@ -137,13 +137,5 @@ def build_example(name, identifier, admin_config, server_address): admin_config=admin_config, options=options) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = ImageInterrogator(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(ImageInterrogator) diff --git a/nostr_dvm/tasks/imageupscale.py b/nostr_dvm/tasks/imageupscale.py index a49f5da..695bc2e 100644 --- a/nostr_dvm/tasks/imageupscale.py +++ b/nostr_dvm/tasks/imageupscale.py @@ -2,7 +2,7 @@ import json from multiprocessing.pool import ThreadPool from nostr_dvm.backends.nova_server.utils import check_server_status, send_request_to_server -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag @@ -129,13 +129,5 @@ def build_example(name, identifier, admin_config, server_address): admin_config=admin_config, options=options) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = ImageUpscale(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(ImageUpscale) diff --git a/nostr_dvm/tasks/textextraction_google.py b/nostr_dvm/tasks/textextraction_google.py index d71e2a6..54a0a69 100644 --- a/nostr_dvm/tasks/textextraction_google.py +++ b/nostr_dvm/tasks/textextraction_google.py @@ -2,7 +2,7 @@ import json import os import time -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config from nostr_dvm.utils.mediasource_utils import organize_input_media_data @@ -156,13 +156,5 @@ def build_example(name, identifier, admin_config): admin_config=admin_config, options=options) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = SpeechToTextGoogle(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(SpeechToTextGoogle) diff --git a/nostr_dvm/tasks/textextraction_pdf.py b/nostr_dvm/tasks/textextraction_pdf.py index 0e4b1b6..2bc771b 100644 --- a/nostr_dvm/tasks/textextraction_pdf.py +++ b/nostr_dvm/tasks/textextraction_pdf.py @@ -2,7 +2,7 @@ import json import os import re -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -112,13 +112,5 @@ def build_example(name, identifier, admin_config): admin_config=admin_config) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = TextExtractionPDF(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(TextExtractionPDF) diff --git a/nostr_dvm/tasks/textextraction_whisperx.py b/nostr_dvm/tasks/textextraction_whisperx.py index dfc62c8..d33436c 100644 --- a/nostr_dvm/tasks/textextraction_whisperx.py +++ b/nostr_dvm/tasks/textextraction_whisperx.py @@ -3,7 +3,7 @@ import os import time from multiprocessing.pool import ThreadPool from nostr_dvm.backends.nova_server.utils import check_server_status, send_request_to_server, send_file_to_server -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config from nostr_dvm.utils.mediasource_utils import organize_input_media_data @@ -181,13 +181,5 @@ def build_example(name, identifier, admin_config, server_address): admin_config=admin_config, options=options) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = SpeechToTextWhisperX(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(SpeechToTextWhisperX) diff --git a/nostr_dvm/tasks/textgeneration_huggingchat.py b/nostr_dvm/tasks/textgeneration_huggingchat.py new file mode 100644 index 0000000..82d6982 --- /dev/null +++ b/nostr_dvm/tasks/textgeneration_huggingchat.py @@ -0,0 +1,108 @@ +import json +import os + +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv +from nostr_dvm.utils.admin_utils import AdminConfig +from nostr_dvm.utils.definitions import EventDefinitions +from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config +from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag + +""" +This File contains a Module to generate Text, based on a prompt using a LLM (local or API) (Ollama, custom model, chatgpt) + +Accepted Inputs: Prompt (text) +Outputs: Generated text +""" + + +class TextGenerationHuggingChat(DVMTaskInterface): + KIND: int = EventDefinitions.KIND_NIP90_GENERATE_TEXT + TASK: str = "text-to-text" + FIX_COST: float = 0 + dependencies = [("nostr-dvm", "nostr-dvm"), + ("hugchat", "hugchat")] + + def __init__(self, name, dvm_config: DVMConfig, nip89config: NIP89Config, + admin_config: AdminConfig = None, options=None): + dvm_config.SCRIPT = os.path.abspath(__file__) + super().__init__(name, dvm_config, nip89config, admin_config, options) + + def is_input_supported(self, tags, client=None, dvm_config=None): + for tag in tags: + if tag.as_vec()[0] == 'i': + input_value = tag.as_vec()[1] + input_type = tag.as_vec()[2] + if input_type != "text": + return False + + return True + + def create_request_from_nostr_event(self, event, client=None, dvm_config=None): + request_form = {"jobID": event.id().to_hex() + "_" + self.NAME.replace(" ", "")} + prompt = "" + + for tag in event.tags(): + if tag.as_vec()[0] == 'i': + input_type = tag.as_vec()[2] + if input_type == "text": + prompt = tag.as_vec()[1] + + options = { + "prompt": prompt, + } + request_form['options'] = json.dumps(options) + + return request_form + + def process(self, request_form): + from hugchat import hugchat + from hugchat.login import Login + sign = Login(os.getenv("HUGGINGFACE_EMAIL"), os.getenv("HUGGINGFACE_PASSWORD")) + cookie_path_dir = "./cookies_snapshot" + try: + cookies = sign.loadCookiesFromDir( + cookie_path_dir) # This will detect if the JSON file exists, return cookies if it does and raise an Exception if it's not. + except: + cookies = sign.login() + sign.saveCookiesToDir(cookie_path_dir) + + + options = DVMTaskInterface.set_options(request_form) + + try: + chatbot = hugchat.ChatBot(cookies=cookies.get_dict()) # or cookie_path="usercookies/.json" + query_result = chatbot.query(options["prompt"]) + print(query_result["text"]) # or query_result.text or query_result["text"] + return str(query_result["text"]).lstrip() + + except Exception as e: + print("Error in Module: " + str(e)) + raise Exception(e) + + +# We build an example here that we can call by either calling this file directly from the main directory, +# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the +# playground or elsewhere +def build_example(name, identifier, admin_config): + dvm_config = build_default_config(identifier) + admin_config.LUD16 = dvm_config.LN_ADDRESS + + nip89info = { + "name": name, + "image": "https://image.nostr.build/c33ca6fc4cc038ca4adb46fdfdfda34951656f87ee364ef59095bae1495ce669.jpg", + "about": "I use a LLM connected via Huggingchat", + "encryptionSupported": True, + "cashuAccepted": True, + "nip90Params": {} + } + + nip89config = NIP89Config() + nip89config.DTAG = check_and_set_d_tag(identifier, name, dvm_config.PRIVATE_KEY, nip89info["image"]) + nip89config.CONTENT = json.dumps(nip89info) + + return TextGenerationHuggingChat(name=name, dvm_config=dvm_config, nip89config=nip89config, + admin_config=admin_config) + + +if __name__ == '__main__': + process_venv(TextGenerationHuggingChat) diff --git a/nostr_dvm/tasks/textgeneration_llmlite.py b/nostr_dvm/tasks/textgeneration_llmlite.py index 8c0d8a1..beee0cc 100644 --- a/nostr_dvm/tasks/textgeneration_llmlite.py +++ b/nostr_dvm/tasks/textgeneration_llmlite.py @@ -1,7 +1,7 @@ import json import os -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -43,11 +43,11 @@ class TextGenerationLLMLite(DVMTaskInterface): if self.options.get("default_model") and self.options.get("default_model") != "": model = self.options['default_model'] else: - model = "gpt-3.5-turbo" #"gpt-4-1106-preview" # This will call chatgpt and requires an OpenAI API Key set in .env + model = "gpt-3.5-turbo" # "gpt-4-1106-preview" # This will call chatgpt and requires an OpenAI API Key set in .env if self.options.get("server") and self.options.get("server") != "": server = self.options['server'] else: - server = "http://localhost:11434" #default ollama server. This will only be used for ollama models. + server = "http://localhost:11434" # default ollama server. This will only be used for ollama models. for tag in event.tags(): if tag.as_vec()[0] == 'i': @@ -114,16 +114,9 @@ def build_example(name, identifier, admin_config): nip89config.DTAG = check_and_set_d_tag(identifier, name, dvm_config.PRIVATE_KEY, nip89info["image"]) nip89config.CONTENT = json.dumps(nip89info) - return TextGenerationLLMLite(name=name, dvm_config=dvm_config, nip89config=nip89config, admin_config=admin_config, options=options) - - -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = TextGenerationLLMLite(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) + return TextGenerationLLMLite(name=name, dvm_config=dvm_config, nip89config=nip89config, admin_config=admin_config, + options=options) if __name__ == '__main__': - process_venv() \ No newline at end of file + process_venv(TextGenerationLLMLite) diff --git a/nostr_dvm/tasks/texttospeech.py b/nostr_dvm/tasks/texttospeech.py index 5cbee16..63aea31 100644 --- a/nostr_dvm/tasks/texttospeech.py +++ b/nostr_dvm/tasks/texttospeech.py @@ -5,7 +5,7 @@ os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1" from pathlib import Path import urllib.request -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -106,8 +106,8 @@ class TextToSpeech(DVMTaskInterface): print(TTS().list_models()) try: - #model = "tts_models/deu/fairseq/vits" - #model = "tts_models/multilingual/multi-dataset/your_tts" + # model = "tts_models/deu/fairseq/vits" + # model = "tts_models/multilingual/multi-dataset/your_tts" model = "tts_models/multilingual/multi-dataset/xtts_v2" tts = TTS(model).to(device) @@ -154,13 +154,5 @@ def build_example(name, identifier, admin_config): options=options) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = TextToSpeech(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(TextToSpeech) diff --git a/nostr_dvm/tasks/translation_google.py b/nostr_dvm/tasks/translation_google.py index ca04070..896790f 100644 --- a/nostr_dvm/tasks/translation_google.py +++ b/nostr_dvm/tasks/translation_google.py @@ -1,6 +1,6 @@ import json import os -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -146,13 +146,5 @@ def build_example(name, identifier, admin_config): return TranslationGoogle(name=name, dvm_config=dvm_config, nip89config=nip89config, admin_config=admin_config) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = TranslationGoogle(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(TranslationGoogle) diff --git a/nostr_dvm/tasks/translation_libretranslate.py b/nostr_dvm/tasks/translation_libretranslate.py index dac2d5b..7d4a99a 100644 --- a/nostr_dvm/tasks/translation_libretranslate.py +++ b/nostr_dvm/tasks/translation_libretranslate.py @@ -2,7 +2,7 @@ import json import os import requests -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -145,13 +145,6 @@ def build_example(name, identifier, admin_config): admin_config=admin_config, options=options) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = TranslationLibre(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - if __name__ == '__main__': - process_venv() + process_venv(TranslationLibre) diff --git a/nostr_dvm/tasks/trending_notes_nostrband.py b/nostr_dvm/tasks/trending_notes_nostrband.py index 9465e92..5b93078 100644 --- a/nostr_dvm/tasks/trending_notes_nostrband.py +++ b/nostr_dvm/tasks/trending_notes_nostrband.py @@ -2,7 +2,7 @@ import json import os from nostr_sdk import Tag -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -115,13 +115,5 @@ def build_example(name, identifier, admin_config): admin_config=admin_config) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = TrendingNotesNostrBand(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(TrendingNotesNostrBand) diff --git a/nostr_dvm/tasks/videogeneration_replicate_svd.py b/nostr_dvm/tasks/videogeneration_replicate_svd.py index 93cd3aa..40906c3 100644 --- a/nostr_dvm/tasks/videogeneration_replicate_svd.py +++ b/nostr_dvm/tasks/videogeneration_replicate_svd.py @@ -5,7 +5,7 @@ import requests import urllib.request from PIL import Image -from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface +from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface, process_venv from nostr_dvm.utils.admin_utils import AdminConfig from nostr_dvm.utils.definitions import EventDefinitions from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config @@ -133,13 +133,5 @@ def build_example(name, identifier, admin_config): admin_config=admin_config) -def process_venv(): - args = DVMTaskInterface.process_args() - dvm_config = build_default_config(args.identifier) - dvm = VideoGenerationReplicateSVD(name="", dvm_config=dvm_config, nip89config=NIP89Config(), admin_config=None) - result = dvm.process(json.loads(args.request)) - DVMTaskInterface.write_output(result, args.output) - - if __name__ == '__main__': - process_venv() + process_venv(VideoGenerationReplicateSVD)