From fa8c372b2d517331b605d774dfbdf0dadfe68a78 Mon Sep 17 00:00:00 2001
From: CP500 <34076958+CP500@users.noreply.github.com>
Date: Mon, 19 Feb 2024 16:38:40 +1000
Subject: [PATCH] Create ollama.py

Adding Ollama support.

Howto use:

from ollama import OllamaLLM
rl = RouteLayer(encoder = encoder, routes=routes, llm=llm)
---
 semantic_router/llms/ollama.py | 37 ++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 semantic_router/llms/ollama.py

diff --git a/semantic_router/llms/ollama.py b/semantic_router/llms/ollama.py
new file mode 100644
index 00000000..5b9dfc7a
--- /dev/null
+++ b/semantic_router/llms/ollama.py
@@ -0,0 +1,37 @@
+import os
+from typing import List, Optional
+import requests
+import json
+
+from semantic_router.llms import BaseLLM
+from semantic_router.schema import Message
+from semantic_router.utils.logger import logger
+
+
+class OllamaLLM(BaseLLM):
+    max_tokens: Optional[int] = 200
+
+
+    def _call_(self, messages: List[Message]) -> str:
+        
+        try:
+
+            payload = {
+                "model": self.name,
+                "messages": [m.to_openai() for m in messages],
+                "options":{
+                    "temperature":0.0,
+                    "num_predict":self.max_tokens
+                },
+                "format":"json",
+                "stream":False
+            }
+
+            response = requests.post("http://localhost:11434/api/chat", json=payload)
+         
+            output = response.json()["message"]["content"]
+
+            return output
+        except Exception as e:
+            logger.error(f"LLM error: {e}")
+            raise Exception(f"LLM error: {e}") from e
\ No newline at end of file
-- 
GitLab