GroqCloud Added

This commit is contained in:
daxcay
2024-10-16 23:02:26 +05:30
parent 166fcf130e
commit 9aed91e202
4 changed files with 187 additions and 1 deletions
+9
View File
@@ -28,9 +28,12 @@ from .classes.DataSet_FindAndReplace import N_CLASS_MAPPINGS as FindAndReplaceMa
from .classes.DataSet_PathSelector import N_CLASS_MAPPINGS as PathSelectorMappings, N_DISPLAY_NAME_MAPPINGS as PathSelectorNameMappings
from .classes.DataSet_LoadImage import N_CLASS_MAPPINGS as LoadImageMappings, N_DISPLAY_NAME_MAPPINGS as LoadImageNameMappings
from .classes.DataSet_SaveImage import N_CLASS_MAPPINGS as SaveImageMappings, N_DISPLAY_NAME_MAPPINGS as SaveImageNameMappings
from .classes.DataSet_SaveImagePro import N_CLASS_MAPPINGS as SaveImageProMappings, N_DISPLAY_NAME_MAPPINGS as SaveImageProNameMappings
from .classes.DataSet_OpenAIChat import N_CLASS_MAPPINGS as OpenAIChatMappings, N_DISPLAY_NAME_MAPPINGS as OpenAIChatNameMappings
from .classes.DataSet_OpenAIChatImage import N_CLASS_MAPPINGS as OpenAIChatImageMappings, N_DISPLAY_NAME_MAPPINGS as OpenAIChatImageNameMappings
from .classes.DataSet_OpenAIChatImageBatch import N_CLASS_MAPPINGS as OpenAIChatImageBatchMappings, N_DISPLAY_NAME_MAPPINGS as OpenAIChatImageBatchNameMappings
from .classes.DataSet_GroqChat import N_CLASS_MAPPINGS as GroqChatMappings, N_DISPLAY_NAME_MAPPINGS as GroqChatNameMappings
from .classes.DataSet_GroqChatImage import N_CLASS_MAPPINGS as GroqChatImageMappings, N_DISPLAY_NAME_MAPPINGS as GroqChatImageNameMappings
NODE_CLASS_MAPPINGS = {}
NODE_CLASS_MAPPINGS.update(VisualizerMappings)
@@ -44,9 +47,12 @@ NODE_CLASS_MAPPINGS.update(PathSelectorMappings)
NODE_CLASS_MAPPINGS.update(ConceptManagerMappings)
NODE_CLASS_MAPPINGS.update(LoadImageMappings)
NODE_CLASS_MAPPINGS.update(SaveImageMappings)
NODE_CLASS_MAPPINGS.update(SaveImageProMappings)
NODE_CLASS_MAPPINGS.update(OpenAIChatMappings)
NODE_CLASS_MAPPINGS.update(OpenAIChatImageMappings)
NODE_CLASS_MAPPINGS.update(OpenAIChatImageBatchMappings)
NODE_CLASS_MAPPINGS.update(GroqChatMappings)
NODE_CLASS_MAPPINGS.update(GroqChatImageMappings)
NODE_DISPLAY_NAME_MAPPINGS = {}
NODE_DISPLAY_NAME_MAPPINGS.update(VisualizerNameMappings)
@@ -60,8 +66,11 @@ NODE_DISPLAY_NAME_MAPPINGS.update(PathSelectorNameMappings)
NODE_DISPLAY_NAME_MAPPINGS.update(ConceptManagerNameMappings)
NODE_DISPLAY_NAME_MAPPINGS.update(LoadImageNameMappings)
NODE_DISPLAY_NAME_MAPPINGS.update(SaveImageNameMappings)
NODE_DISPLAY_NAME_MAPPINGS.update(SaveImageProNameMappings)
NODE_DISPLAY_NAME_MAPPINGS.update(OpenAIChatNameMappings)
NODE_DISPLAY_NAME_MAPPINGS.update(OpenAIChatImageNameMappings)
NODE_DISPLAY_NAME_MAPPINGS.update(OpenAIChatImageBatchNameMappings)
NODE_DISPLAY_NAME_MAPPINGS.update(GroqChatNameMappings)
NODE_DISPLAY_NAME_MAPPINGS.update(GroqChatImageNameMappings)
WEB_DIRECTORY = "./web"
+78
View File
@@ -0,0 +1,78 @@
from groq import Groq
import requests
import os
def getGroqModels(key):
url = "https://api.groq.com/openai/v1/models"
headers = {
"Authorization": f"Bearer {key}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
response = response.json()
return [item['id'] for item in response['data'] if 'id' in item]
api_key = os.environ.get("GROQ_API_KEY")
api_models = getGroqModels(api_key)
class DataSet_GroqChat:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"model": (api_models, {"default": api_models[0]}),
"system_prompt": ("STRING", {"multiline": True, "default": ""}),
"user_prompt": ("STRING", {"multiline": True, "default": ""}),
"max_tokens": ("INT", {"default": 1024})
}
}
FUNCTION = "generate"
RETURN_TYPES = ("STRING",)
def generate(self, model, system_prompt, user_prompt, max_tokens):
try:
api_client = Groq(
api_key=api_key,
)
chat_completion = api_client.chat.completions.create(
messages=[
{
"role": "system",
"content": system_prompt
},
{
"role": "user",
"content": user_prompt,
}
],
model=model,
temperature=0.5,
max_tokens=max_tokens,
top_p=1,
stop=None,
stream=False,
)
return (chat_completion.choices[0].message.content,)
except Exception as e:
return (f"Error: {str(e)}",)
N_CLASS_MAPPINGS = {
"DataSet_GroqChat": DataSet_GroqChat,
}
N_DISPLAY_NAME_MAPPINGS = {
"DataSet_GroqChat": "DataSet_GroqChat",
}
+98
View File
@@ -0,0 +1,98 @@
from groq import Groq
import requests
import os
import base64
import io
from PIL import Image
import numpy as np
def getGroqModels(key):
url = "https://api.groq.com/openai/v1/models"
headers = {
"Authorization": f"Bearer {key}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
response = response.json()
return [item['id'] for item in response['data'] if 'id' in item]
api_key = os.environ.get("GROQ_API_KEY")
api_models = getGroqModels(api_key)
class DataSet_GroqChatImage:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"image": ("IMAGE",),
"model": (api_models, {"default": api_models[0]}),
"user_prompt": ("STRING", {"multiline": True, "default": ""}),
"max_tokens": ("INT", {"default": 1024})
}
}
FUNCTION = "generate"
RETURN_TYPES = ("STRING",)
def to_base64(self, image):
image = image[0]
i = 255. * image.cpu().numpy()
img = Image.fromarray(np.clip(i, 0, 255).astype(np.uint8))
buffered = io.BytesIO()
img.save(buffered, format="PNG")
return base64.b64encode(buffered.getvalue()).decode("utf-8")
def generate(self, image, model, user_prompt, max_tokens):
try:
base64img = self.to_base64(image)
api_client = Groq(
api_key=api_key,
)
chat_completion = api_client.chat.completions.create(
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": user_prompt},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{base64img}",
},
},
],
}
],
model=model,
temperature=0.5,
max_tokens=max_tokens,
top_p=1,
stop=None,
stream=False,
)
return (chat_completion.choices[0].message.content,)
except Exception as e:
return (f"Error: {str(e)}",)
N_CLASS_MAPPINGS = {
"DataSet_GroqChatImage": DataSet_GroqChatImage,
}
N_DISPLAY_NAME_MAPPINGS = {
"DataSet_GroqChatImage": "DataSet_GroqChatImage",
}
+2 -1
View File
@@ -2,4 +2,5 @@ matplotlib
wordcloud
networkx
pandas
openai
openai
groq