matrix notifications and config driven chroma
This commit is contained in:
parent
431e5c63aa
commit
c466b04a25
@ -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
|
|
@ -11,7 +11,11 @@ class OllamaGenerator:
|
|||||||
self.inner_title = inner_title
|
self.inner_title = inner_title
|
||||||
self.content = content
|
self.content = content
|
||||||
self.response = None
|
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"]}"
|
ollama_url = f"{os.environ["OLLAMA_PROTOCOL"]}://{os.environ["OLLAMA_HOST"]}:{os.environ["OLLAMA_PORT"]}"
|
||||||
self.ollama_client = Client(host=ollama_url)
|
self.ollama_client = Client(host=ollama_url)
|
||||||
self.ollama_model = os.environ["EDITOR_MODEL"]
|
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.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"""
|
self.prompt_inject = f"""
|
||||||
You are a journalist, Software Developer and DevOps expert
|
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
|
You like to use almost no code examples and prefer to talk
|
||||||
in a light comedic tone. You are also Australian
|
in a light comedic tone. You are also Australian
|
||||||
As this person write this blog as a markdown document.
|
As this person write this blog as a markdown document.
|
||||||
@ -116,7 +120,7 @@ class OllamaGenerator:
|
|||||||
prompt_system = f"""
|
prompt_system = f"""
|
||||||
You are an editor taking information from {len(self.agent_models)} Software
|
You are an editor taking information from {len(self.agent_models)} Software
|
||||||
Developers and Data experts
|
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 also Australian. The content may have light comedic elements,
|
||||||
you are more professional and will attempt to tone these down
|
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.
|
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:
|
with open(filename, "w") as f:
|
||||||
f.write(self.generate_markdown())
|
f.write(self.generate_markdown())
|
||||||
|
|
||||||
# TODO: Make this generic a "create message for system" if you will
|
def generate_system_message(self, prompt_system, prompt_human):
|
||||||
# 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}"
|
|
||||||
messages = [("system", prompt_system), ("human", prompt_human),]
|
messages = [("system", prompt_system), ("human", prompt_human),]
|
||||||
commit_message = self.llm.invoke(messages).text()
|
ai_message = self.llm.invoke(messages).text()
|
||||||
return commit_message
|
return ai_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
|
|
||||||
|
20
src/main.py
20
src/main.py
@ -32,17 +32,28 @@ for note in tril_notes:
|
|||||||
|
|
||||||
|
|
||||||
# Generate commit messages and push to repo
|
# 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_user = os.environ["GIT_USER"]
|
||||||
git_pass = os.environ["GIT_PASS"]
|
git_pass = os.environ["GIT_PASS"]
|
||||||
repo_manager = git_repo.GitRepository("blog/", git_user, 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)
|
repo_manager.create_copy_commit_push(blog_path, os_friendly_title, commit_message)
|
||||||
|
|
||||||
# Generate notification for Matrix
|
# 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']
|
secret_key = os.environ['N8N_SECRET']
|
||||||
webhook_url = os.environ['N8N_WEBHOOK_URL']
|
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"""
|
notification_string = f"""
|
||||||
<h2>{tril_notes[note]['title']}</h2>
|
<h2>{tril_notes[note]['title']}</h2>
|
||||||
<h3>Summary</h3>
|
<h3>Summary</h3>
|
||||||
@ -59,6 +70,7 @@ for note in tril_notes:
|
|||||||
|
|
||||||
webhook_client = N8NWebhookJwt(secret_key, webhook_url)
|
webhook_client = N8NWebhookJwt(secret_key, webhook_url)
|
||||||
|
|
||||||
|
print("Notifying")
|
||||||
n8n_result = webhook_client.send_webhook(payload)
|
n8n_result = webhook_client.send_webhook(payload)
|
||||||
|
|
||||||
print(f"N8N response: {n8n_result}")
|
print(f"N8N response: {n8n_result['status']}")
|
||||||
|
@ -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'])
|
|
Loading…
x
Reference in New Issue
Block a user