Создание собственных анализаторов вывода
Преобразуйте необработанный текст LLM в надёжные структурированные данные с помощью собственных и встроенных анализаторов вывода LangChain.
«Создание собственных анализаторов вывода» — бесплатный урок LangChain / RAG / Vector DBs на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения LangChain / RAG / Vector DBs, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс LangChain / RAG / Vector DBs содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Why Parse Output?
LLMs return free-form text, but applications need structured data: objects, lists, enums. An output parser converts the raw string into something your code can use safely.
The Parser Interface
A LangChain output parser implements two key methods.
parse(text)turns the string into your typeget_format_instructions()tells the model how to format its reply
A Minimal Custom Parser
Subclass BaseOutputParser and implement parse. This one splits a comma-separated reply into a list.
from langchain_core.output_parsers import BaseOutputParser
class CommaListParser(BaseOutputParser):
def parse(self, text):
return [t.strip() for t in text.split(",")]
print(CommaListParser().parse("a, b, c")) # ["a", "b", "c"]Format Instructions
Override get_format_instructions so the prompt nudges the model toward a parseable shape. The instructions are injected into your prompt template.
def get_format_instructions(self):
return "Reply with items separated by commas, no numbering."Pydantic Output Parser
For rich objects, LangChain ships a PydanticOutputParser. You define a schema and it generates instructions plus validation automatically.
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
# parser = PydanticOutputParser(pydantic_object=Person)Wiring a Parser into a Chain
With LCEL you pipe the model output straight into the parser using the | operator.
chain = prompt | llm | CommaListParser()
result = chain.invoke({"topic": "fruits"})Handling Malformed Output
Models sometimes ignore the format. A robust parser validates and raises a clear error, or attempts a best-effort recovery, instead of crashing downstream.
def parse(self, text):
try:
return json.loads(text)
except json.JSONDecodeError:
raise ValueError("Model did not return valid JSON")The OutputFixingParser
Wrap any parser in an OutputFixingParser. When parsing fails, it sends the bad output and the error back to an LLM to repair it.
Streaming and Parsers
Some parsers support incremental parsing of streamed tokens. For structured types this is hard, so streaming parsers often emit partial objects as fields complete.
Validation Beyond Types
You can add business rules inside parse: ranges, allowed values, required combinations. Reject anything that would corrupt your application state.
def parse(self, text):
n = int(text.strip())
if not 1 <= n <= 5:
raise ValueError("Rating must be 1-5")
return nPutting It Together
Define the parser, expose format instructions, inject them into the prompt, and pipe everything in a chain. The result is reliable structured output.
prompt = template.partial(
format=parser.get_format_instructions()
)
chain = prompt | llm | parser
chain.invoke({"input": "..."})Quick Check
Test your understanding of output parsers.
Recap
You built custom output parsing:
- Implement
parseandget_format_instructions - Use
PydanticOutputParserfor rich schemas - Pipe parsers into chains with
| - Wrap with
OutputFixingParserfor resilience
Часто задаваемые вопросы
Урок «Создание собственных анализаторов вывода» бесплатный?
Да — полный текст урока «Создание собственных анализаторов вывода» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс LangChain / RAG / Vector DBs, подпишись на CoddyKit PRO. Курс LangChain / RAG / Vector DBs содержит 4 уроков всего.
Чему я научусь в уроке «Создание собственных анализаторов вывода»?
Преобразуйте необработанный текст LLM в надёжные структурированные данные с помощью собственных и встроенных анализаторов вывода LangChain. Ты практикуешь LangChain / RAG / Vector DBs с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать LangChain / RAG / Vector DBs?
Предыдущий опыт не требуется. LangChain / RAG / Vector DBs на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Создание собственных анализаторов вывода»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке LangChain / RAG / Vector DBs?
Да. Каждый урок LangChain / RAG / Vector DBs включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Разработка пользовательских загрузчиков документов
- Интеграция пользовательских моделей эмбеддингов
- Расширение цепочек поиска пользовательской логикой
- Создание собственных анализаторов вывода