From 14c51f27666f2450e610d3c31c859f6122a6aaf6 Mon Sep 17 00:00:00 2001 From: Cyber MacGeddon Date: Wed, 24 Sep 2025 16:34:36 +0100 Subject: [PATCH] More LLMs --- .../trustgraph/model/text_completion/azure/llm.py | 13 +++++++++---- .../model/text_completion/llamafile/llm.py | 13 +++++++++---- .../model/text_completion/lmstudio/llm.py | 13 +++++++++---- .../trustgraph/model/text_completion/tgi/llm.py | 14 +++++++++++--- 4 files changed, 38 insertions(+), 15 deletions(-) diff --git a/trustgraph-flow/trustgraph/model/text_completion/azure/llm.py b/trustgraph-flow/trustgraph/model/text_completion/azure/llm.py index 388ac7c1..af3dfcaf 100755 --- a/trustgraph-flow/trustgraph/model/text_completion/azure/llm.py +++ b/trustgraph-flow/trustgraph/model/text_completion/azure/llm.py @@ -32,7 +32,7 @@ class Processor(LlmService): token = params.get("token", default_token) temperature = params.get("temperature", default_temperature) max_output = params.get("max_output", default_max_output) - model = default_model + model = params.get("model", default_model) if endpoint is None: raise RuntimeError("Azure endpoint not specified") @@ -53,7 +53,7 @@ class Processor(LlmService): self.token = token self.temperature = temperature self.max_output = max_output - self.model = model + self.default_model = model def build_prompt(self, system, content): @@ -100,7 +100,12 @@ class Processor(LlmService): return result - async def generate_content(self, system, prompt): + async def generate_content(self, system, prompt, model=None): + + # Use provided model or fall back to default + model_name = model or self.default_model + + logger.debug(f"Using model: {model_name}") try: @@ -125,7 +130,7 @@ class Processor(LlmService): text = resp, in_token = inputtokens, out_token = outputtokens, - model = self.model + model = model_name ) return resp diff --git a/trustgraph-flow/trustgraph/model/text_completion/llamafile/llm.py b/trustgraph-flow/trustgraph/model/text_completion/llamafile/llm.py index d769248c..1571e3e7 100755 --- a/trustgraph-flow/trustgraph/model/text_completion/llamafile/llm.py +++ b/trustgraph-flow/trustgraph/model/text_completion/llamafile/llm.py @@ -39,7 +39,7 @@ class Processor(LlmService): } ) - self.model = model + self.default_model = model self.llamafile=llamafile self.temperature = temperature self.max_output = max_output @@ -50,14 +50,19 @@ class Processor(LlmService): logger.info("Llamafile LLM service initialized") - async def generate_content(self, system, prompt): + async def generate_content(self, system, prompt, model=None): + + # Use provided model or fall back to default + model_name = model or self.default_model + + logger.debug(f"Using model: {model_name}") prompt = system + "\n\n" + prompt try: resp = self.openai.chat.completions.create( - model=self.model, + model=model_name, messages=[ {"role": "user", "content": prompt} ] @@ -82,7 +87,7 @@ class Processor(LlmService): text = resp.choices[0].message.content, in_token = inputtokens, out_token = outputtokens, - model = "llama.cpp", + model = model_name, ) return resp diff --git a/trustgraph-flow/trustgraph/model/text_completion/lmstudio/llm.py b/trustgraph-flow/trustgraph/model/text_completion/lmstudio/llm.py index 16dcfdda..0ed47517 100755 --- a/trustgraph-flow/trustgraph/model/text_completion/lmstudio/llm.py +++ b/trustgraph-flow/trustgraph/model/text_completion/lmstudio/llm.py @@ -39,7 +39,7 @@ class Processor(LlmService): } ) - self.model = model + self.default_model = model self.url = url + "v1/" self.temperature = temperature self.max_output = max_output @@ -50,7 +50,12 @@ class Processor(LlmService): logger.info("LMStudio LLM service initialized") - async def generate_content(self, system, prompt): + async def generate_content(self, system, prompt, model=None): + + # Use provided model or fall back to default + model_name = model or self.default_model + + logger.debug(f"Using model: {model_name}") prompt = system + "\n\n" + prompt @@ -59,7 +64,7 @@ class Processor(LlmService): logger.debug(f"Prompt: {prompt}") resp = self.openai.chat.completions.create( - model=self.model, + model=model_name, messages=[ {"role": "user", "content": prompt} ] @@ -86,7 +91,7 @@ class Processor(LlmService): text = resp.choices[0].message.content, in_token = inputtokens, out_token = outputtokens, - model = self.model + model = model_name ) return resp diff --git a/trustgraph-flow/trustgraph/model/text_completion/tgi/llm.py b/trustgraph-flow/trustgraph/model/text_completion/tgi/llm.py index 09286405..c8622c85 100755 --- a/trustgraph-flow/trustgraph/model/text_completion/tgi/llm.py +++ b/trustgraph-flow/trustgraph/model/text_completion/tgi/llm.py @@ -30,32 +30,40 @@ class Processor(LlmService): base_url = params.get("url", default_base_url) temperature = params.get("temperature", default_temperature) max_output = params.get("max_output", default_max_output) + model = params.get("model", "tgi") super(Processor, self).__init__( **params | { "temperature": temperature, "max_output": max_output, "url": base_url, + "model": model, } ) self.base_url = base_url self.temperature = temperature self.max_output = max_output + self.default_model = model self.session = aiohttp.ClientSession() logger.info(f"Using TGI service at {base_url}") logger.info("TGI LLM service initialized") - async def generate_content(self, system, prompt): + async def generate_content(self, system, prompt, model=None): + + # Use provided model or fall back to default + model_name = model or self.default_model + + logger.debug(f"Using model: {model_name}") headers = { "Content-Type": "application/json", } request = { - "model": "tgi", + "model": model_name, "messages": [ { "role": "system", @@ -96,7 +104,7 @@ class Processor(LlmService): text = ans, in_token = inputtokens, out_token = outputtokens, - model = "tgi", + model = model_name, ) return resp