untested ollama
This commit is contained in:
parent
675c7d1701
commit
1bd0ae9b1b
0
src/ai_generators/__init__.py
Normal file
0
src/ai_generators/__init__.py
Normal file
39
src/ai_generators/ollama_md_generator.py
Normal file
39
src/ai_generators/ollama_md_generator.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import os
|
||||||
|
from ollama import Client
|
||||||
|
|
||||||
|
|
||||||
|
class OllamaGenerator:
|
||||||
|
|
||||||
|
def __init__(self, title: str, content: str):
|
||||||
|
self.title = title
|
||||||
|
self.content = content
|
||||||
|
self.ollama_client = Client(host=f"""
|
||||||
|
{os.getenv('OLLAMA_PROTOCOL')}://{os.getenv('OLLAMA_HOST')}:{os.getenv('OLLAMA_PORT')}
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
def generate_markdown(self) -> str:
|
||||||
|
|
||||||
|
prompt = f"""
|
||||||
|
Generate a 1000 word blog as a markdown document.
|
||||||
|
The title for the blog is {self.title}.
|
||||||
|
Do not output the title in the markdown.
|
||||||
|
The content for the blog is:
|
||||||
|
{self.content}
|
||||||
|
Only output markdown DO NOT GENERATE AN EXPLANATION
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
self.response = self.ollama_client.chat(model=self.ollama_model,
|
||||||
|
messages=[
|
||||||
|
{
|
||||||
|
'role': 'user',
|
||||||
|
'content': f'{prompt}',
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
raise Exception(f"Failed to generate markdown: {e}")
|
||||||
|
|
||||||
|
def save_to_file(self, filename: str) -> None:
|
||||||
|
with open(filename, "w") as f:
|
||||||
|
f.write(self.generate_markdown())
|
22
src/main.py
22
src/main.py
@ -1,5 +1,4 @@
|
|||||||
from ollama import Client
|
import ai_generators.ollama_md_generator as omg
|
||||||
|
|
||||||
import trilium.notes as tn
|
import trilium.notes as tn
|
||||||
|
|
||||||
tril = tn.TrilumNotes()
|
tril = tn.TrilumNotes()
|
||||||
@ -7,17 +6,18 @@ tril = tn.TrilumNotes()
|
|||||||
tril.get_new_notes()
|
tril.get_new_notes()
|
||||||
tril_notes = tril.get_notes_content()
|
tril_notes = tril.get_notes_content()
|
||||||
|
|
||||||
|
def convert_to_lowercase_with_underscores(string):
|
||||||
|
return string.lower().replace(" ", "_")
|
||||||
|
|
||||||
|
|
||||||
for note in tril_notes:
|
for note in tril_notes:
|
||||||
print(tril_notes[note]['title'])
|
print(tril_notes[note]['title'])
|
||||||
print(tril_notes[note]['content'])
|
print(tril_notes[note]['content'])
|
||||||
client = Client(host='http://192.168.178.45:11434')
|
print("Generating Document")
|
||||||
|
ai_gen = omg.OllamaGenerator(tril_notes[note]['title'],
|
||||||
|
tril_notes[note]['content'])
|
||||||
|
os_friendly_title = convert_to_lowercase_with_underscores(tril_notes[note]['title'])
|
||||||
|
omg.save_to_file(f"{os_friendly_title}.md")
|
||||||
|
|
||||||
|
|
||||||
user_prompt = input("Ask mistral-nemo a question: ")
|
|
||||||
|
|
||||||
response = client.chat(model='mistral-nemo', messages=[
|
|
||||||
{
|
|
||||||
'role': 'user',
|
|
||||||
'content': f'{user_prompt}',
|
|
||||||
},
|
|
||||||
])
|
|
||||||
print(response['message']['content'])
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user