39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
import logging
|
|
|
|
from langchain_core.prompts import ChatPromptTemplate
|
|
from langchain_ollama.llms import OllamaLLM
|
|
|
|
from fetch_wiki import fetch_all_page_of_chapter
|
|
# https://wiki.ppsfleet.navy/api/chapters/2
|
|
# https://wiki.ppsfleet.navy/api/pages/9
|
|
|
|
logging.basicConfig(
|
|
level=20,
|
|
format="%(asctime)s %(filename)s:%(lineno)s %(levelname)s %(message)s"
|
|
)
|
|
|
|
cook_list = "\n\n".join(["# "+page["name"] + "\n" +
|
|
page["markdown"] for page in fetch_all_page_of_chapter(2)])
|
|
|
|
start_context_str = "Tu es assistant cuisinier. Ton nom est 'Hisako arato'. Ton role est de répondre à des questions sur les recettes suivantes. Ce sont tes recettes et tu les connais par coeur. N'invente pas d'autre recettes."
|
|
|
|
end_context_str = "N'oublie pas de parler dans un français correct et soutenu. Ne soit pas bavard, va à l'essentiel, répond seulement à la question qui t'es posée. N'essaie pas de deviner le genre de la personne qui te pose des questions. N'oublie pas de donne les proportions avec les ingrédient de la recette."
|
|
|
|
context_str = start_context_str + "\n\nDébut des recettes:\n```" + \
|
|
cook_list + "\n```\nFin des recettes\n\n"+end_context_str
|
|
|
|
prompt = ChatPromptTemplate.from_messages(
|
|
[("system", context_str), ("user", "{text}")]
|
|
)
|
|
|
|
# num_ctx should be superior of the prompt length
|
|
model = OllamaLLM(model="llama3.2:3b", num_ctx="32768", temperature=0)
|
|
|
|
chain = prompt | model
|
|
|
|
user_query = ""
|
|
while user_query != "stop":
|
|
print("\n")
|
|
user_query = input("?")
|
|
print(chain.invoke(
|
|
{"text": user_query}))
|