matrix_notifications #3

Merged
armistace merged 2 commits from matrix_notifications into master 2025-06-04 21:34:12 +10:00
4 changed files with 26 additions and 42 deletions
Showing only changes of commit c466b04a25 - Show all commits

View File

@ -1,4 +0,0 @@
export N8N_SECRET='11ECjor0@iM9CR3XxEn2GkNl'
export N8N_WEBHOOK_URL='http://192.168.178.159:5678/webhook-test/e054ae2d-95d0-4999-9cc7-6f8fa0d44c8f'
python src/test_n8n.py

View File

@ -11,7 +11,11 @@ class OllamaGenerator:
self.inner_title = inner_title
self.content = content
self.response = None
self.chroma = chromadb.HttpClient(host="172.18.0.2", port=8000)
try:
chroma_port = int(os.environ['CHROMA_PORT'])
except ValueError as e:
raise Exception(f"CHROMA_PORT is not an integer: {e}")
self.chroma = chromadb.HttpClient(host=os.environ['CHROMA_HOST'], port=chroma_port)
ollama_url = f"{os.environ["OLLAMA_PROTOCOL"]}://{os.environ["OLLAMA_HOST"]}:{os.environ["OLLAMA_PORT"]}"
self.ollama_client = Client(host=ollama_url)
self.ollama_model = os.environ["EDITOR_MODEL"]
@ -20,7 +24,7 @@ class OllamaGenerator:
self.llm = ChatOllama(model=self.ollama_model, temperature=0.6, top_p=0.5) #This is the level head in the room
self.prompt_inject = f"""
You are a journalist, Software Developer and DevOps expert
writing a 3000 word draft blog for other tech enthusiasts.
writing a 3000 word draft blog article for other tech enthusiasts.
You like to use almost no code examples and prefer to talk
in a light comedic tone. You are also Australian
As this person write this blog as a markdown document.
@ -116,7 +120,7 @@ class OllamaGenerator:
prompt_system = f"""
You are an editor taking information from {len(self.agent_models)} Software
Developers and Data experts
writing a 3000 word blog. You like when they use almost no code examples.
writing a 3000 word blog article. You like when they use almost no code examples.
You are also Australian. The content may have light comedic elements,
you are more professional and will attempt to tone these down
As this person produce and an amalgamtion of this blog as a markdown document.
@ -154,19 +158,7 @@ class OllamaGenerator:
with open(filename, "w") as f:
f.write(self.generate_markdown())
# TODO: Make this generic a "create message for system" if you will
# This will allow me to control the system and human prompt at the client
# level rather than having to play within the class
def generate_commit_message(self):
prompt_system = "You are a blog creator commiting a piece of content to a central git repo"
prompt_human = f"Generate a 5 word git commit message describing {self.response}"
def generate_system_message(self, prompt_system, prompt_human):
messages = [("system", prompt_system), ("human", prompt_human),]
commit_message = self.llm.invoke(messages).text()
return commit_message
def generate_notification_summary(self):
prompt_system = "You are a blog creator notifiying the final editor of the final creation of blog"
prompt_human = f"Generate a 50 word summary describing {self.response}"
messages = [("system", prompt_system), ("human", prompt_human),]
notification_message = self.llm.invoke(messages).text()
return notification_message
ai_message = self.llm.invoke(messages).text()
return ai_message

View File

@ -32,17 +32,28 @@ for note in tril_notes:
# Generate commit messages and push to repo
commit_message = ai_gen.generate_commit_message()
print("Generating Commit Message")
git_sytem_prompt = "You are a blog creator commiting a piece of content to a central git repo"
git_human_prompt = f"Generate a 5 word git commit message describing {ai_gen.response}. ONLY OUTPUT THE RESPONSE"
commit_message = ai_gen.generate_system_message(git_sytem_prompt, git_human_prompt)
git_user = os.environ["GIT_USER"]
git_pass = os.environ["GIT_PASS"]
repo_manager = git_repo.GitRepository("blog/", git_user, git_pass)
print("Pushing to Repo")
repo_manager.create_copy_commit_push(blog_path, os_friendly_title, commit_message)
# Generate notification for Matrix
notification_message = ai_gen.generate_notification_summary()
print("Generating Notification Message")
git_branch_url = f'https://git.aridgwayweb.com/armistace/blog/src/branch/{os_friendly_title}/src/content/{os_friendly_title}.md'
n8n_system_prompt = f"You are a blog creator notifiying the final editor of the final creation of blog available at {git_branch_url}"
n8n_prompt_human = f"""
Generate an informal 150 word
summary describing {ai_gen.response}.
Don't address it or use names. ONLY OUTPUT THE RESPONSE
"""
notification_message = ai_gen.generate_system_message(n8n_system_prompt, n8n_prompt_human)
secret_key = os.environ['N8N_SECRET']
webhook_url = os.environ['N8N_WEBHOOK_URL']
git_branch_url = f'https://git.aridgwayweb.com/armistace/blog/src/branch/{os_friendly_tile}'
notification_string = f"""
<h2>{tril_notes[note]['title']}</h2>
<h3>Summary</h3>
@ -59,6 +70,7 @@ for note in tril_notes:
webhook_client = N8NWebhookJwt(secret_key, webhook_url)
print("Notifying")
n8n_result = webhook_client.send_webhook(payload)
print(f"N8N response: {n8n_result}")
print(f"N8N response: {n8n_result['status']}")

View File

@ -1,16 +0,0 @@
import os
from datetime import datetime
from notifications.n8n import N8NWebhookJwt
secret_key = os.environ['N8N_SECRET']
webhook_url = os.environ['N8N_WEBHOOK_URL']
payload = {
"message": "Hello, N8N webhook with JWT!",
"timestamp": datetime.now().isoformat()
}
webhook_client = N8NWebhookJwt(secret_key, webhook_url)
result = webhook_client.send_webhook(payload)
print(result['status'])