AI Personal Learning
und praktische Anleitung
Sitzsack Marscode1

Ollama in LangChain - Python-Integration

Dieser Artikel wurde am 2025-03-13 23:58 aktualisiert, ein Teil des Inhalts ist zeitkritisch, wenn er ungültig ist, bitte eine Nachricht hinterlassen!

kurz

In diesem Dokument wird beschrieben, wie Sie die Ollama Ollama ist ein Open-Source-Implementierungstool für große Sprachmodelle, während LangChain ein Framework für die Entwicklung von Sprachmodell-basierten Anwendungen ist. Durch die Kombination der beiden können wir fortschrittliche KI-Modelle in einer lokalen Umgebung schnell einsetzen und nutzen.

Hinweis: Dieses Dokument enthält wichtige Codeschnipsel und ausführliche Erläuterungen. Den vollständigen Code finden Sie in derDieses Jupyter-NotizbuchGefunden in.

 

1. umweltbezogene Einstellungen

Konfigurieren der Conda-Umgebung

Zunächst müssen wir die Conda-Umgebung in Jupyter verwenden. Führen Sie den folgenden Befehl in der Kommandozeile aus:

conda erstellen -n handlm python=3.10 -y
conda handlm aktivieren
pip install jupyter
python -m ipykernel install --user --name=handlm

Starten Sie Jupyter nach der Ausführung neu und wählen Sie den Kernel für diese Umgebung wie gezeigt aus:

Ollama in LangChain - Python Integration-1

⚠️ Hinweis

Achtung! Es ist auch möglich, die globale Umgebung direkt ohne die virtuelle Umgebung von conda zu verwenden.

Installation von Abhängigkeiten

Bevor wir beginnen, müssen wir die folgenden Pakete installieren:

  • langchain-ollamaOllama: für die Integration des Ollama-Modells in den LangChain-Rahmen
  • langchainDie Kernbibliothek von LangChain, die Werkzeuge und Abstraktionen für die Entwicklung von KI-Anwendungen bietet
  • langchain-community: Enthält verschiedene Integrationen und Tools, die von der Gemeinschaft beigetragen wurden
  • KopfkissenBildverarbeitung, die bei multimodalen Aufgaben eingesetzt wird
  • faiss-cpuFür den Bau einfacher RAG Retriever

Es kann mit dem folgenden Befehl installiert werden:

pip install langchain-ollama langchain langchain-community Pillow faiss-cpu

 

2. laden Sie die benötigten Modelle herunter und initialisieren Sie OllamaLLM

Lama3.1-Modell herunterladen

  1. Besuchen Sie die offizielle Website https://ollama.com/download, um Ollama auf den verfügbaren unterstützten Plattformen herunterzuladen und zu installieren.
  2. Unter https://ollama.ai/library finden Sie alle verfügbaren Modelle.
  3. passieren (eine Rechnung oder Inspektion etc.) ollama ziehen um die verfügbaren LLM-Modelle abzurufen (zum Beispiel:ollama pull llama3.1).

Die Befehlszeile wird wie in der Abbildung gezeigt ausgeführt:


Ollama in LangChain - Python Integration-2

Speicherort des Modells:

  • Mac. ~/.ollama/models/
  • Linux (oder WSL). /usr/share/ollama/.ollama/models
  • Fenster. C:\Benutzer\Administrator\.ollama\models

 

3 Beispiele für die grundlegende Verwendung

Führen eines Gesprächs mit ChatPromptTemplate

ChatPromptTemplate ermöglicht es uns, eine wiederverwendbare Vorlage mit einem oder mehreren Parametern zu erstellen. Diese Parameter können zur Laufzeit dynamisch ersetzt werden, um verschiedene Prompts zu erzeugen.

template = """
Du bist eine hilfreiche KI, die gut darin ist, eine Vielzahl von Fragen zu beantworten.
Frage: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
chain = prompt | model
chain.invoke({"Frage": "Bist du besser als GPT4?"})

Verwenden Sie im Abschnitt Kette erstellen den Pipe-Operator |Sie verbindet die Eingabeaufforderung mit dem Modell zu einem Verarbeitungsablauf. Diese Verkettung macht es einfach, verschiedene Komponenten zu kombinieren und wiederzuverwenden.

aufrufen. Methode löst die gesamte Verarbeitungskette aus, indem sie unsere Frage an die Vorlage übergibt und dann die formatierte Eingabeaufforderung zur Verarbeitung an das Modell sendet.

Streaming-Ausgang

Die Streaming-Ausgabe ist eine Technik, bei der die Ergebnisse inkrementell zurückgegeben werden, während sie einen langen Text erzeugen. Diese Methode hat mehrere wichtige Vorteile:

  1. Verbesserte Benutzerfreundlichkeit: Die Benutzer können Teilergebnisse sofort sehen und müssen nicht warten, bis die gesamte Antwort abgeschlossen ist.
  2. Verkürzung der Wartezeit: Bei langen Antworten können die Nutzer mit dem Lesen beginnen, bevor die vollständige Antwort generiert ist.
  3. Interaktion in Echtzeit: Ermöglicht Eingriffe oder Abbrüche während des Generierungsprozesses.

In der Praxis, vor allem bei Chatbots oder Echtzeit-Dialogsystemen, ist die Streaming-Ausgabe fast unerlässlich.

von langchain_ollama importieren ChatOllama
model = ChatOllama(model="llama3.1", Temperatur=0.7)
messages = [
("Mensch", "Hallo"), ]
]
for chunk in model.stream(messages): print(chunk.content, end(messages))
print(chunk.content, end='', flush=True)

model.stream() Methode ist ein Wrapper um die Streaming-Output-Schnittstelle der Ollama-API, die ein Generator-Objekt zurückgibt. Beim Aufruf der model.stream(Nachrichten) Wenn Sie dies tun, werden die folgenden Vorgänge abgeschlossen:

  • Senden Sie eine Anfrage an die Ollama-API, um eine Antwort zu erzeugen.
  • Die API beginnt mit der Generierung von Text, aber anstatt zu warten, bis der gesamte Text generiert ist, gibt sie ihn in kleinen Stücken zurück.
  • Für jedes kleine Stück Text, das empfangen wird, wird diestream() Methode ergibt den Textblock.
  • flush=True Stellen Sie sicher, dass jeder Clip sofort angezeigt wird und nicht erst, wenn der Puffer voll ist.

Werkzeug Aufruf

Tool-Aufrufe sind die Fähigkeit eines KI-Modells, mit externen Funktionen oder APIs zu interagieren. Dadurch kann das Modell komplexe Aufgaben wie mathematische Berechnungen, Datenabfragen oder Aufrufe externer Dienste durchführen.

def simple_calculator(operation: str, x: float, y: float) -> float.
'''Tatsächliche Code-Verarbeitung logic''''
llm = ChatOllama(
model="llama3.1",
temperature=0,
).bind_tools([simple_calculator])
result = llm.invoke("Weißt du, was 10 Millionen mal zwei ist?")

bind_tools ermöglicht es uns, eine benutzerdefinierte Funktion im Modell zu registrieren. Wenn das Modell auf ein Problem stößt, das Berechnungen erfordert, kann es diese Funktion aufrufen, um genaue Ergebnisse zu erhalten, anstatt sich auf sein Vorwissen zu verlassen.

Diese Fähigkeit ist z. B. bei der Entwicklung komplexer KI-Anwendungen nützlich:

  • Chatbots erstellen, die auf Echtzeitdaten zugreifen können
  • Erstellen Sie intelligente Assistenten, die bestimmte Aufgaben erfüllen (z. B. Buchung, Anfrage usw.)
  • Entwicklung von KI-Systemen, die präzise Berechnungen oder komplexe Operationen durchführen können

multimodales Modell

Ollama unterstützt multimodale Modelle wie bakllava und llava. Multimodale Modelle sind KI-Modelle, die mehrere Arten von Eingaben verarbeiten können (z. B. Text, Bilder, Audio usw.). Diese Modelle zeichnen sich dadurch aus, dass sie multimodale Inhalte verstehen und generieren können, was komplexere und natürlichere Interaktionen zwischen Mensch und Computer ermöglicht.

Zunächst muss das multimodale Modell heruntergeladen werden. Führen Sie es in der Befehlszeile aus:

ollama pull llava

Ollama in LangChain - Python Integration-3

Wir können dann den folgenden Code verwenden, um die Bild- und Texteingabe zu verarbeiten:

from langchain_ollama import ChatOllama
from langchain_core.messages importiere HumanMessage
from langchain_core.output_parsers import StrOutputParser
llm = ChatOllama(model="llava", Temperatur=0)
def prompt_func(data).
'''Multimodale Eingaben konstruieren''''
chain = prompt_func | llm | StrOutputParser()
query_chain = chain.invoke(
{"text": "Welches Tier ist auf diesem Bild?" , "image": image_b64}
)

Der springende Punkt ist hier:

  1. Bildvorverarbeitung: Wir müssen das Bild in eine base64-kodierte Zeichenkette umwandeln.
  2. Hinweisfunktion:prompt_func Es wird eine multimodale Eingabe mit Text und Bildern erstellt.
  3. Verkettung: Wir verwenden | Operator verbindet die Hinweisfunktion, das Modell und den Ausgabeparser.

Multimodale Modelle sind zum Beispiel in vielen Szenarien nützlich:

  • Erzeugung von Bildbeschreibungen
  • visuelles Frage- und Antwortsystem
  • Bildbasierte Inhaltsanalyse und Empfehlungen

 

4. erweiterte Nutzung

Konversation mit ConversationChain

ConversationChain ist ein leistungsfähiges Werkzeug, das von LangChain für die Verwaltung von Mehrrunden-Dialogen bereitgestellt wird. Es kombiniert Sprachmodelle, Prompt-Vorlagen und In-Memory-Komponenten, um die Erstellung kontextbezogener Dialogsysteme zu erleichtern.

Speicher = GesprächspufferSpeicher()
conversation = ConversationChain(
llm=model,
memory=Speicher, verbose=True
verbose=True
)
# Führen Sie das Gespräch
response = conversation.predict(input="Hallo, ich würde gerne etwas über künstliche Intelligenz erfahren.")
print("AI:", Antwort)
response = conversation.predict(input="Können Sie mir ein Beispiel für KI im Alltag nennen?")
print("KI:", Antwort)
response = conversation.predict(input="Das klingt interessant. Welche Anwendungen von KI im Gesundheitswesen gibt es?")
print("KI:", Antwort)

Die Schlüsselkomponente ist hier:

  1. ConversationBufferMemoryDies ist eine einfache In-Memory-Komponente, die den Verlauf aller bisherigen Unterhaltungen speichert.
  2. ConversationChainEs kombiniert ein Sprachmodell, einen Speicher und eine Standardvorlage für Dialogansagen.

Die Pflege der Dialoghistorie ist wichtig, weil sie es den Modellen ermöglicht:

  • Verstehen des Kontexts und der zuvor erwähnten Informationen
  • kohärentere und relevantere Antworten zu generieren
  • Umgang mit komplexen Mehrrunden-Dialogszenarien

In der Praxis müssen Sie möglicherweise die Verwendung fortschrittlicherer Speicherkomponenten in Betracht ziehen, wie z. B. die ConversationSummaryMemoryum lange Dialoge zu handhaben und eine Überschreitung der Kontextlängengrenze des Modells zu vermeiden.

Benutzerdefinierte Prompt-Vorlagen

Gut gestaltete Prompt-Vorlagen sind der Schlüssel zur Erstellung effizienter KI-Anwendungen. In diesem Beispiel haben wir eine komplexe Eingabeaufforderung für die Erstellung von Produktbeschreibungen erstellt:

system_message = SystemMessage(content=""")
Sie sind ein erfahrener Experte für E-Commerce-Texte. Ihre Aufgabe ist es, ansprechende Artikelbeschreibungen auf der Grundlage der gegebenen Produktinformationen zu erstellen.
Stellen Sie sicher, dass Ihre Beschreibung prägnant und aussagekräftig ist und die wichtigsten Vorteile des Produkts hervorhebt.
""")
human_message_template = """"
Bitte erstellen Sie eine ansprechende Produktbeschreibung für das folgende Produkt:
Produkttyp: {product_type}
Hauptmerkmale: {key_feature}
Zielgruppe: {target_audience}
Preisspanne: {price_range}
Markenpositionierung: {brand_positioning}
Bitte beschreiben Sie jeden der drei folgenden Stile in jeweils etwa 50 Wörtern:
1. rationale Analyse
2. emotionale Ansprache
3. erzählerische Darstellung
"""
# Anwendungsbeispiel
produkt_info = {
"product_type": "Smartwatch",
"key_feature": "Herzfrequenzüberwachung und Schlafanalyse",
"target_audience": "Gesundheitsbewusste junge Berufstätige",

"brand_positioning": "Die perfekte Kombination aus Technologie und Gesundheit"
}

Es gibt mehrere wichtige Überlegungen zur Gestaltung dieser Struktur:

  1. system_prompt: definiert die Rolle und die allgemeine Aufgabe der KI und gibt den Ton des gesamten Dialogs vor.
  2. human_message_template: enthält die Struktur der spezifischen Anweisungen und der erforderlichen Meldungen.
  3. Multi-Parameter-Design: ermöglicht die flexible Anpassung an unterschiedliche Produkte und Anforderungen.
  4. Vielfältige Anforderungen an den Output: Ermutigen Sie die Modelle, ihre Vielfalt zu demonstrieren, indem Sie unterschiedliche Beschreibungsstile verlangen.

Beachten Sie bei der Gestaltung einer effektiven Vorlage für die Eingabeaufforderung die folgenden Punkte:

  • Klare Definition der Rolle und des Auftrags von AI
  • Bereitstellung eines klaren, strukturierten Eingabeformats
  • Enthält spezifische Ausgabeanforderungen und Formatierungshinweise
  • Überlegen Sie, wie Sie die Kapazität und Kreativität des Modells maximieren können.

Aufbau eines einfachen RAG-Q&A-Systems

RAG (Retrieval-Augmented Generation) ist eine KI-Technik, die Retrieval und Generierung kombiniert, um die Antwortfähigkeit eines Sprachmodells durch das Abrufen relevanter Informationen zu erweitern:

  1. Aufteilung der Dokumente der Wissensdatenbank in Teile und Erstellung von Vektorindizes
  2. Vektorisierung des Benutzerproblems und Abruf der relevanten Dokumente in einem Index
  3. Bereitstellung der abgerufenen relevanten Dokumente für das Sprachmodell als Kontext zusammen mit der ursprünglichen Frage
  4. Das Sprachmodell erzeugt Antworten auf der Grundlage der abgerufenen Informationen

Der Vorteil von RAG ist, dass es Sprachmodellen hilft, auf aktuelle und spezialisierte Informationen zuzugreifen, Illusionen zu reduzieren und die Genauigkeit und Relevanz von Antworten zu verbessern.

LangChain bietet eine Vielzahl von Komponenten, die nahtlos mit Ollama-Modellen integriert werden können. Hier werden wir zeigen, wie man das Ollama-Modell in Verbindung mit einem Vektorspeicher und einem Retriever verwendet, um ein einfaches RAG-Frage-Antwort-System zu erstellen.

Als Erstes müssen Sie sicherstellen, dass das Einbettungsmodell heruntergeladen wird, indem Sie den folgenden Befehl in der Befehlszeile ausführen:

ollama pull nomic-embed-text

Wir können dann das RAG-System aufbauen:

# Initialisierung des Ollama-Modells und der Einbettung
llm = ChatOllama(model="llama3.1")
Einbettungen = OllamaEmbeddings(model="nomic-embed-text")
# Bereiten Sie das Dokument vor
text = """
Datawhale ist eine Open-Source-Organisation, die sich auf den Bereich der Datenwissenschaft und KI konzentriert und herausragende Lernende aus vielen Institutionen und bekannten Unternehmen in diesem Bereich sowie eine Gruppe von Teammitgliedern mit Open-Source- und Forschergeist zusammenbringt.
Mit der Vision "für den Lernenden, mit dem Lernenden wachsen" fördert Datawhale wahren Selbstausdruck, Offenheit und Toleranz, gegenseitiges Vertrauen und gegenseitige Unterstützung, den Mut zu Versuch und Irrtum und den Mut zur Übernahme von Verantwortung.
Gleichzeitig nutzt Datawhale das Konzept von Open Source, um Open-Source-Inhalte, Open-Source-Lernen und Open-Source-Lösungen zu erforschen, die Entwicklung von Talenten zu fördern und eine Verbindung zwischen Menschen, Wissen, Unternehmen und der Zukunft herzustellen.
Wenn Sie ein Open-Source-Projekt in der Datawhale Open-Source-Community starten möchten, lesen Sie bitte die Datawhale Open-Source-Projektrichtlinien im Detail [https://github.com/datawhalechina/DOPMC/blob/main/GUIDE.md]
"""
# Text aufteilen
text_splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=20)
chunks = text_splitter.split_text(text)
# Erstellen eines Vektorspeichers
vectorstore = FAISS.from_texts(chunks, Einbettungen)
Abrufer = vectorstore.as_retriever()
# Erstellen Sie die Vorlage für die Eingabeaufforderung
template = """Fragen können nur wie folgt beantwortet werden.
{Kontext}
Frage: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
# Erstellen einer Such-Fragen-Kette
chain = (
{"Kontext": Abrufer, "Frage": RunnablePassthrough()}
| prompt
| llm
)
# Beantworten einer Frage mit Hilfe einer Kette
question = "Was sollte ich tun, wenn ich zu datawhale beitragen möchte?"
Antwort = chain.invoke(Frage)

Dieses RAG-System funktioniert wie folgt:

  1. Textsegmentierung: Verwendung RecursiveCharacterTextSplitter Teilen Sie lange Texte in kleinere Abschnitte auf.
  2. Vektorisierung und Indexierung: Verwendung OllamaEmbeddings Konvertiert einen Textblock in einen Vektor und erstellt einen Vektorindex mit FAISS.
  3. Abruf: Wenn eine Frage eingeht, vektorisiert das System die Frage und ruft den relevantesten Textblock aus dem FAISS-Index ab.
  4. Generierung von Antworten: Die abgerufenen relevanten Textabschnitte werden dem Sprachmodell zusammen mit der ursprünglichen Frage zur Verfügung gestellt, um die endgültige Antwort zu generieren.

Das RAG-System ist z. B. in vielen realen Situationen sehr nützlich:

  • Kundendienst: Kundenanfragen können auf der Grundlage der Wissensbasis des Unternehmens schnell beantwortet werden.
  • Recherchehilfe: Hilft Forschern, schnell relevante Literatur zu finden und die wichtigsten Informationen zusammenzufassen.
  • Persönlicher Assistent: Kombiniert persönliche Notizen und Webinformationen, um personalisierte Informationen und Vorschläge zu liefern.

 

ein Urteil fällen

Anhand dieser Beispiele zeigen wir, wie man mit Ollama und LangChain eine Vielzahl von KI-Anwendungen erstellen kann, von einfachen Dialogsystemen bis hin zu komplexen RAG-Q&A-Systemen. Diese Werkzeuge und Techniken bieten eine solide Grundlage für die Entwicklung leistungsstarker KI-Anwendungen.

Die Kombination von Ollama und LangChain bietet Entwicklern eine große Flexibilität und viele Möglichkeiten. Sie können die richtigen Modelle und Komponenten entsprechend Ihren spezifischen Anforderungen auswählen und ein KI-System aufbauen, das zu Ihrem Anwendungsszenario passt.

Da sich die Technologie weiter entwickelt, erwarten wir, dass noch mehr innovative Anwendungen entstehen. Wir hoffen, dass dieser Leitfaden Ihnen den Einstieg in die KI-Entwicklung erleichtert und Ihre Kreativität anregt, die unendlichen Möglichkeiten der KI-Technologie zu erkunden.

CDN1
Darf nicht ohne Genehmigung vervielfältigt werden:Chef-KI-Austauschkreis " Ollama in LangChain - Python-Integration

Chef-KI-Austauschkreis

Der Chief AI Sharing Circle konzentriert sich auf das KI-Lernen und bietet umfassende KI-Lerninhalte, KI-Tools und praktische Anleitungen. Unser Ziel ist es, den Nutzern dabei zu helfen, die KI-Technologie zu beherrschen und gemeinsam das unbegrenzte Potenzial der KI durch hochwertige Inhalte und den Austausch praktischer Erfahrungen zu erkunden. Egal, ob Sie ein KI-Anfänger oder ein erfahrener Experte sind, dies ist der ideale Ort für Sie, um Wissen zu erwerben, Ihre Fähigkeiten zu verbessern und Innovationen zu verwirklichen.

Kontaktieren Sie uns
de_DE_formalDeutsch (Sie)