diff --git a/templates/components.jsonnet b/templates/components.jsonnet index d0df569f..e94374ac 100644 --- a/templates/components.jsonnet +++ b/templates/components.jsonnet @@ -11,6 +11,7 @@ "claude": import "components/claude.jsonnet", "cohere": import "components/cohere.jsonnet", "googleaistudio": import "components/googleaistudio.jsonnet", + "lmstudio": import "components/lmstudio.jsonnet", "mistral": import "components/mistral.jsonnet", "ollama": import "components/ollama.jsonnet", "openai": import "components/openai.jsonnet", @@ -23,6 +24,7 @@ "claude-rag": import "components/claude-rag.jsonnet", "cohere-rag": import "components/cohere-rag.jsonnet", "googleaistudio-rag": import "components/googleaistudio-rag.jsonnet", + "lmstudio-rag": import "components/lmstudio-rag.jsonnet", "mistral-rag": import "components/mistral-rag.jsonnet", "ollama-rag": import "components/ollama-rag.jsonnet", "openai-rag": import "components/openai-rag.jsonnet", diff --git a/templates/components/lmstudio-rag.jsonnet b/templates/components/lmstudio-rag.jsonnet new file mode 100644 index 00000000..70a94087 --- /dev/null +++ b/templates/components/lmstudio-rag.jsonnet @@ -0,0 +1,63 @@ +local base = import "base/base.jsonnet"; +local images = import "values/images.jsonnet"; +local url = import "values/url.jsonnet"; +local prompts = import "prompts/mixtral.jsonnet"; + +{ + + with:: function(key, value) + self + { + ["lmstudio-rag-" + key]:: value, + }, + + "lmstudio-rag-max-output-tokens":: 4096, + "lmstudio-rag-temperature":: 0.0, + "lmstudio-rag-model":: "GPT-3.5-Turbo", + + "text-completion-rag" +: { + + create:: function(engine) + + local envSecrets = engine.envSecrets("lmstudio-credentials") + .with_env_var("LMSTUDIO_URL", "lmstudio-url"); + + local containerRag = + engine.container("text-completion-rag") + .with_image(images.trustgraph_flow) + .with_command([ + "text-completion-lmstudio", + "-p", + url.pulsar, + "-x", + std.toString($["lmstudio-rag-max-output-tokens"]), + "-t", + "%0.3f" % $["lmstudio-rag-temperature"], + "-m", + $["lmstudio-rag-model"], + "-i", + "non-persistent://tg/request/text-completion-rag", + "-o", + "non-persistent://tg/response/text-completion-rag", + ]) + .with_env_var_secrets(envSecrets) + .with_limits("0.5", "128M") + .with_reservations("0.1", "128M"); + + local containerSetRag = engine.containers( + "text-completion-rag", [ containerRag ] + ); + + local serviceRag = + engine.internalService(containerSetRag) + .with_port(8080, 8080, "metrics"); + + engine.resources([ + envSecrets, + containerSetRag, + serviceRag, + ]) + + }, + +} + prompts + diff --git a/templates/components/lmstudio.jsonnet b/templates/components/lmstudio.jsonnet new file mode 100644 index 00000000..4fe1da58 --- /dev/null +++ b/templates/components/lmstudio.jsonnet @@ -0,0 +1,59 @@ +local base = import "base/base.jsonnet"; +local images = import "values/images.jsonnet"; +local url = import "values/url.jsonnet"; +local prompts = import "prompts/mixtral.jsonnet"; + +{ + + with:: function(key, value) + self + { + ["lmstudio-" + key]:: value, + }, + + "lmstudio-max-output-tokens":: 4096, + "lmstudio-temperature":: 0.0, + "lmstudio-model":: "GPT-3.5-Turbo", + + "text-completion" +: { + + create:: function(engine) + + local envSecrets = engine.envSecrets("lmstudio-credentials") + .with_env_var("LMSTUDIO_URL", "lmstudio-url"); + + local container = + engine.container("text-completion") + .with_image(images.trustgraph_flow) + .with_command([ + "text-completion-lmstudio", + "-p", + url.pulsar, + "-x", + std.toString($["lmstudio-max-output-tokens"]), + "-t", + "%0.3f" % $["lmstudio-temperature"], + "-m", + $["lmstudio-model"], + ]) + .with_env_var_secrets(envSecrets) + .with_limits("0.5", "128M") + .with_reservations("0.1", "128M"); + + local containerSet = engine.containers( + "text-completion", [ container ] + ); + + local service = + engine.internalService(containerSet) + .with_port(8080, 8080, "metrics"); + + engine.resources([ + envSecrets, + containerSet, + service, + ]) + + }, + +} + prompts +