Si vous n'avez pas encore installé Ollama, voici un article détaillant le protocole d'installation et l'utilisation basique.
Bon, passons aux choses serieuses :
Installer la librairie Ollama
Ollama fournit une API RESTful permettant de communiquer avec les modèles. Il existe une librairie python permettant justement d'utiliser cette API de manière simple.Tout d'abord, il va falloir installer cette fameuse librairie !
Pour cela, rien de plus simple, il suffit d'installer le module ollama avec Pip3 :
Connecter python aux LLMs
Maintenant que la librairie est installée, vous pouvez l'importer simplement avecPuis, vous pouvez envoyer un message à un modèle (dans notre exemple, mistral) et récuperer sa réponse :
response=ollama.chat(model="mistral", messages=[{"role" : "user", "content" : "Why is linaki docs the best blog ever ?"}]) print(response["message"]["content"]Plutôt sympa, non ? Vous pouvez également recevoir un flux et afficher le message au fur et à mesure que Ollama le génère :
stream=ollama.chat(model="mistral", messages=[{"role" : "user", "content" : "Why is linaki docs the best blog ever ?"}], stream=True) for chunk in stream: print(chunk["message"]["content"], end="")Vous voyez alors la réponse s'afficher progressivement au fil des "pensées" du LLM.
Créer un agent
Envoyer un message, c'est bien, mais il faudrait pouvoir créer un "chat" où le modèle se rappelle des messages précédents pour ainsi créer une sorte de conversation.Pour cela, il faut renvoyer les messages précédents à Ollama pour que le système se souvienne de ce qui a été dit précedemment.
Nous allons donc créer une classe "Agent" permettant de ne pas avoir à se soucier de cela :
class Agent: def __init__(self, model='mistral', system=''): self.messages = [self.create_message(system, "system")] # self.model=model def create_message(self, message, role): return { 'role': role, 'content': message } # Starting the main conversation loop def chat(self): response = ollama.chat(model=self.model, messages=self.chat_messages) assistant_message=response["message"]["content"] self.chat_messages.append(self.create_message(assistant_message, 'assistant')) return assistant_message def ask(self, message): self.chat_messages.append( self.create_message(message, 'user') ) return self.chat()Il suffit désormais de créer un agent et de lui envoyer des messages :
agent=Agent(model="llama3") print(agent.ask("Why is linaki.org an incredible website ?")) print(agent.ask("Rewrite the same text but in spanish"))De plus, avec cette approche, vous pouvez en voyer des prompts "systèmes" décrivant le comportement de l'agent ou orientant ses pensées vers un domaine specifique comme par exemple :
You are a senior developper and you are a front end specialistUn exemple concret d'utilisation
Si vous souhaitez voir un exemple concret de comment utiliser Ollama en python, je vous propose de jeter un oeil à LLaMa life, une aventure textuelle de ma conception !