diff --git a/primakov-article-images/json.mp4 b/primakov-article-images/json.mp4 new file mode 100644 index 0000000..3fd8c89 Binary files /dev/null and b/primakov-article-images/json.mp4 differ diff --git a/primakov-article-images/Слайд с промптом для генерации презентации.PNG b/primakov-article-images/Слайд с промптом для генерации презентации.PNG index 4aa0bcc..c1d069d 100644 Binary files a/primakov-article-images/Слайд с промптом для генерации презентации.PNG and b/primakov-article-images/Слайд с промптом для генерации презентации.PNG differ diff --git a/primakov.md b/primakov.md index 2ba034f..4d566d1 100644 --- a/primakov.md +++ b/primakov.md @@ -53,12 +53,22 @@ LangChain предоставляет механизм шаблонов для удобной работы с промптами: ```typescript -const template = ` -Создай план презентации на тему {topic}. +import { PromptTemplate } from "@langchain/core/prompts"; + +const promptTemplate = PromptTemplate.fromTemplate( + `Создай план презентации на тему {topic}. Учти следующие требования: {requirements} Текущая дата: {current_date} -{format_instructions} -`; +{format_instructions}` +); + +await promptTemplate.invoke({ + topic: "cats" + requirements: '...', + current_date: new Date().toISOString(), + format_instructions: '...' +}); + ``` Переменные в фигурных скобках заменяются на реальные значения при выполнении. @@ -67,9 +77,6 @@ const template = ` Для надёжной работы с JSON-ответами использую Zod для описания схемы: -![Слайд с описанием JSON схемы](https://via.placeholder.com/800x450/2B6CB0/FFFFFF?text=JSON+Schema+с+Zod%0Apresentation%3A+%7B%0A++title%3A+string%0A++slides%3A+array%0A++imageStyle%3A+string%0A%7D) -*[0:06:23 → 0:08:00]* - ```typescript const presentationSchema = z.object({ title: z.string().describe("Заголовок презентации"), @@ -80,15 +87,12 @@ const presentationSchema = z.object({ bullets: z.array(z.string()).describe("Основные пункты"), imagePrompt: z.string().describe("Промпт для генерации изображения"), webSearchQuery: z.string().optional().describe("Запрос для поиска в интернете") - })) + })).describe('Список слайдов презентации') }); ``` ### Создание цепочки LangChain -![Слайд с описанием работы парсера ответа от LLM](https://via.placeholder.com/800x450/2B6CB0/FFFFFF?text=LangChain+Pipeline%0ATemplate+→+Model+→+Parser+→+JSON) -*[0:08:00 → 0:09:25]* - ```typescript const parser = StructuredOutputParser.fromZodSchema(presentationSchema); const chain = template.pipe(model).pipe(parser); @@ -100,7 +104,7 @@ const result = await chain.invoke({ }); ``` -![Демонстрация распарсенного JSON](https://via.placeholder.com/800x450/2B6CB0/FFFFFF?text=Результат+парсинга%0A%7B%0A++title%3A+%22Фотографирование+котят%22%0A++slides%3A+%5B...%5D%0A%7D) +![Демонстрация распарсенного JSON](./primakov-article-images/json.mp4) *[0:09:25 → 0:09:55]* ## Часть 2: Создание презентации с LangGraph