RAG -Codierungsassistent gibt Arbeitscode in Langchain Expression Language (LCEL) aus, um schnell neue generative KI -Prototypen zu entwickeln.
GPT-4 hat derzeit keine Kenntnis von LCEL in seinen Trainingsdaten. Daher verwendet dieses Tool eine benutzerdefinierte Technik für die Erzeugung (ARRAVEAL-AUGmented Generationed ", um relevante, vollständige Codierungsbeispiele zu identifizieren und sie dem Kontextfenster als wenige Beispiele hinzuzufügen.
/data Datenverzeichnis ist mit Beispielen für Arbeitscode und einigen Meta -Inhalten gefüllt, um beim Abrufen zu helfen/data sind in eine Weaviate -Vektor -Datenbank eingebettetSie können den Prozess ausführlicher auf den Substantisch lesen.
Oder schauen Sie sich eine Video -Walkthrough an.
Dies ist ein Arbeitsprototyp für die lokale Entwicklung.
Verbesserung des Einbettungs- und Abrufprozesses: Um qualitativ hochwertige Übereinstimmungen zu erzielen, bin ich nur eine Kurzbeschreibung für jedes Code-Beispiel ein, das die Schlüsselspezifikationen des Ansatzes extrahiert. Siehe ein Beispiel unten, bei dem die Beschreibung, die beim Einbetten verwendet wird, eine verkürzte Version der vollständigen Code -Kommentare im Beispielcode ist:
"""
tags: [langchain, rag]
description: |
- Accept string
- Retrieve matching documents using DocArrayInMemorySearch vectorstore
- Format single prompt
- Parse response as string
"""
# Create a chain that does the following:
# - Accept a string as input
# - Retrieve matching documents from a DocArrayInMemorySearch vectorstore, and pass through the results and the original question to a prompt
# - Format the prompt using variables from the object
# - Pass the prompt to OpenAI
# - Parse the OpenAI response as a string
from langchain.chat_models import ChatOpenAI
from langchain.embeddings import OpenAIEmbeddings
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser
from langchain.schema.runnable import RunnableParallel, RunnablePassthrough
from langchain.vectorstores import DocArrayInMemorySearch
vectorstore = DocArrayInMemorySearch.from_texts(
["Lisa likes cooking", "Bears like honey"],
embedding=OpenAIEmbeddings(),
)
retriever = vectorstore.as_retriever()
template = """Answer the question:
{context}
Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
model = ChatOpenAI()
output_parser = StrOutputParser()
setup_and_retrieval = RunnableParallel(
{"context": retriever, "question": RunnablePassthrough()}
)
chain = setup_and_retrieval | prompt | model | output_parser
chain.invoke("What does Lisa like?")
Sobald es genügend Beispiele gibt, kann ich untersuchen, dass ein fein abgestimmter Modell erstellt wird, um die detaillierten Code-Kommentare in diese Kurzbeschreibung umzuwandeln, um sowohl die Code-Beispiele als auch die Benutzeranforderung einzubetten.
Erweitern Sie dies über LCEL hinaus - Ich habe eine Option in die Beispielcode -Meta -Tags aufgenommen, um Technologien oder Schlüsselwörter anzugeben. Diese könnten in der Wea -Abfrage als harte Filter verwendet werden, aber ich verwende sie derzeit nicht, da die Ergebnisse derzeit ziemlich genau sind. Aber es könnte notwendig werden, wenn das Beispielverzeichnis wächst.