Помощник Rag Coding выводит рабочий код на языке выражения Langchain (LCEL), чтобы быстро разработать новые генеративные прототипы ИИ.
В настоящее время GPT-4 не имеет никаких знаний о LCEL в своих учебных данных, поэтому в этом инструменте используется пользовательская методика получения генерации (RAG), для выявления соответствующих, полных примеров кодирования и добавления их в окно контекста в виде нескольких примеров.
/data заполняется примерами рабочего кода и некоторым мета -содержанием, чтобы помочь с поиском/data встроены в базу данных Weaviate VectorВы можете прочитать о процессе более подробно на Supack.
Или посмотрите видео по уходу.
Это рабочий прототип, предназначенный для локальной разработки.
Улучшение процесса внедрения и поиска: Чтобы получить высококачественные совпадения, я вкладываю только сокращенное описание для каждого примера кода, который извлекает ключевые особенности подхода. См. Пример ниже, где описание, которое используется во внедрении, является сокращенной версией полных комментариев кода в примере кода:
"""
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?")
После того, как появится достаточно примеров, я мог бы исследовать создание тонкой настройки модели для преобразования подробных комментариев кода в это сокращенное описание, чтобы встроить как примеры кода, так и запрос пользователя.
Разверните это за пределы LCEL - я включил в пример кодового кода метатеги для указания технологий или ключевых слов. Они могут быть использованы в качестве жестких фильтров в рамках запроса, но в настоящее время я не использую их, поскольку результаты в настоящее время довольно точны. Но это может стать необходимым по мере роста примера каталога.