From 6d0c5293e3a04f3d0dca60984bf4cc9eb13d9fc1 Mon Sep 17 00:00:00 2001 From: Lytkini Date: Tue, 21 Jan 2025 15:46:15 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +- cookbook/README.md | 81 +- cookbook/extraction.ipynb | 330 +++++ cookbook/gigachat_functions_agent.ipynb | 1198 +++++++++++++++++ cookbook/gigachat_phone_agent.ipynb | 399 ++++++ cookbook/gigachat_qa.ipynb | 642 +++++++++ cookbook/js/README.md | 10 + {js => cookbook/js}/deno.json | 0 {js => cookbook/js}/extraction.ipynb | 0 .../js}/langgraph_quickstart.ipynb | 0 {js => cookbook/js}/rag.ipynb | 0 {js => cookbook/js}/tools.ipynb | 0 cookbook/playlists.ipynb | 203 +++ ...0\260\321\200\320\270\321\202\320\260.txt" | 838 ++++++++++++ .../agents/gigachat_phone_agent.ipynb | 371 +---- docs/docs_ru/cookbook/extraction.ipynb | 299 +--- .../cookbook/gigachat_functions_agent.ipynb | 1165 +--------------- docs/docs_ru/cookbook/gigachat_qa.ipynb | 613 +-------- docs/docs_ru/cookbook/playlists.ipynb | 165 +-- js/README.md | 5 - static/img/logo-with-backgroung.png | Bin 0 -> 289360 bytes static/img/logo.png | Bin 0 -> 141541 bytes 22 files changed, 3649 insertions(+), 2681 deletions(-) create mode 100644 cookbook/extraction.ipynb create mode 100644 cookbook/gigachat_functions_agent.ipynb create mode 100644 cookbook/gigachat_phone_agent.ipynb create mode 100644 cookbook/gigachat_qa.ipynb create mode 100644 cookbook/js/README.md rename {js => cookbook/js}/deno.json (100%) rename {js => cookbook/js}/extraction.ipynb (100%) rename {js => cookbook/js}/langgraph_quickstart.ipynb (100%) rename {js => cookbook/js}/rag.ipynb (100%) rename {js => cookbook/js}/tools.ipynb (100%) create mode 100644 cookbook/playlists.ipynb create mode 100644 "cookbook/sample_data/\320\274\320\260\321\201\321\202\320\265\321\200_\320\270_\320\274\320\260\321\200\320\263\320\260\321\200\320\270\321\202\320\260.txt" delete mode 100644 js/README.md create mode 100644 static/img/logo-with-backgroung.png create mode 100644 static/img/logo.png diff --git a/README.md b/README.md index 78710ebf37a08..a23c21ab61faf 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@
- Logo + Logo

πŸ¦œοΈπŸ”— GigaChain (GigaChat + LangChain)

@@ -19,17 +19,10 @@
-![Product Name Screen Shot](/docs/static/img/logo-with-backgroung.png) +![Product Name Screen Shot](/static/img/logo-with-backgroung.png) --- -> [!NOTE] -> Π‘ 29.10.2024 GigaChain прСдоставляСт всю Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… партнСрского ΠΏΠ°ΠΊΠ΅Ρ‚Π° [langchain-gigachat](https://github.com/ai-forever/langchain-gigachat/tree/master/libs/gigachat). -> -> Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, обСспСчивая доступ ΠΊΠΎ всСм интСграциям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ [ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ LangChain](https://python.langchain.com/docs/integrations/providers/), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… вСрсий Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выпуска. -> -> ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ GigaChain (v0.2.x) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² Π²Π΅Ρ‚ΠΊΠ΅ [v_2.x_legacy](https://github.com/ai-forever/gigachain/tree/v_2.x_legacy). - # О GigaChain GigaChain – это Π½Π°Π±ΠΎΡ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм Π±ΠΎΠ»ΡŒΡˆΠΈΡ… языковых ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (*LLM*), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС этапы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‚ прототипирования ΠΈ исслСдования, Π΄ΠΎ запуска Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ. diff --git a/cookbook/README.md b/cookbook/README.md index e215c463f5a17..9beb6f5c65cce 100644 --- a/cookbook/README.md +++ b/cookbook/README.md @@ -1,65 +1,20 @@ -# LangChain cookbook +# Π‘Π±ΠΎΡ€Π½ΠΈΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² -Example code for building applications with LangChain, with an emphasis on more applied and end-to-end examples than contained in the [main documentation](https://python.langchain.com). +Π’ этой ΠΏΠ°ΠΏΠΊΠ΅ собраны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования партнСрского ΠΏΠ°ΠΊΠ΅Ρ‚Π° langchain-gigachat. + +> [!NOTE] +> ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с JS-вСрсиСй ΠΏΠ°ΠΊΠ΅Ρ‚Π° β€” [Π² ΠΏΠ°ΠΏΠΊΠ΅ js](/cookbook/js/README.md). + +| ΠŸΡ€ΠΈΠΌΠ΅Ρ€ | ОписаниС | +| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| [gigachat_vision_simple](/cookbook/gigachat_vision/gigachat_vision_simple.ipynb) | РаспознаваниС изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat API | +| [gigachat_vision](/cookbook/gigachat_vision/gigachat_vision.ipynb) | Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сущностСй Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ структурированного ΠΎΡ‚Π²Π΅Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Pydantic | +| [gigachat_with_images](/cookbook/images_and_videos/gigachat_with_images.ipynb) | Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ скачиваниС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat API | +| [yandex_search/retriever](/cookbook/yandex_search/retriever.ipynb) | РСализация RAG (Retrieval Augmented Generation) Π½Π° основС GigaChat API ΠΈ Yandex Search API | +| [yandex_search/tool](/cookbook/yandex_search/tool.ipynb) | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π°Π³Π΅Π½Ρ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Yandex Search API, для тСкстового поиска Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ | +| [extraction](/cookbook/extraction.ipynb) | ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ структурированного ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ GigaChat API с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. **ΠŸΡ€ΠΈΠΌΠ΅Ρ€ дорабатываСтся ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ** | +| [gigachat_functions_agent](/cookbook/gigachat_functions_agent.ipynb) | АгСнт с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° БМБ, поиск Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² ΠΈ Π΄Ρ€.) Π½Π° основС GigaChat API | +| [gigachat_phone_agent](/cookbook/gigachat_phone_agent.ipynb) | АгСнт Β«ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ общаСтся с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π±Π°Π·ΠΎΠΉ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ оформляСт Π·Π°ΠΊΠ°Π·Ρ‹ | +| [gigachat_qa](/cookbook/gigachat_qa.ipynb) | ДСмонстрация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ RAG, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° вопросы ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ | +| [playlists](/cookbook/playlists.ipynb) | БоставлСниС плСйлистов Spotify с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat API. **ΠŸΡ€ΠΈΠΌΠ΅Ρ€ дорабатываСтся** | -Notebook | Description -:- | :- -[agent_fireworks_ai_langchain_mongodb.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/agent_fireworks_ai_langchain_mongodb.ipynb) | Build an AI Agent With Memory Using MongoDB, LangChain and FireWorksAI. -[mongodb-langchain-cache-memory.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/mongodb-langchain-cache-memory.ipynb) | Build a RAG Application with Semantic Cache Using MongoDB and LangChain. -[LLaMA2_sql_chat.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/LLaMA2_sql_chat.ipynb) | Build a chat application that interacts with a SQL database using an open source llm (llama2), specifically demonstrated on an SQLite database containing rosters. -[Semi_Structured_RAG.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/Semi_Structured_RAG.ipynb) | Perform retrieval-augmented generation (rag) on documents with semi-structured data, including text and tables, using unstructured for parsing, multi-vector retriever for storing, and lcel for implementing chains. -[Semi_structured_and_multi_moda...](https://github.com/langchain-ai/langchain/tree/master/cookbook/Semi_structured_and_multi_modal_RAG.ipynb) | Perform retrieval-augmented generation (rag) on documents with semi-structured data and images, using unstructured for parsing, multi-vector retriever for storage and retrieval, and lcel for implementing chains. -[Semi_structured_multi_modal_RA...](https://github.com/langchain-ai/langchain/tree/master/cookbook/Semi_structured_multi_modal_RAG_LLaMA2.ipynb) | Perform retrieval-augmented generation (rag) on documents with semi-structured data and images, using various tools and methods such as unstructured for parsing, multi-vector retriever for storing, lcel for implementing chains, and open source language models like llama2, llava, and gpt4all. -[amazon_personalize_how_to.ipynb](https://github.com/langchain-ai/langchain/blob/master/cookbook/amazon_personalize_how_to.ipynb) | Retrieving personalized recommendations from Amazon Personalize and use custom agents to build generative AI apps -[analyze_document.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/analyze_document.ipynb) | Analyze a single long document. -[autogpt/autogpt.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/autogpt/autogpt.ipynb) | Implement autogpt, a language model, with langchain primitives such as llms, prompttemplates, vectorstores, embeddings, and tools. -[autogpt/marathon_times.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/autogpt/marathon_times.ipynb) | Implement autogpt for finding winning marathon times. -[baby_agi.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/baby_agi.ipynb) | Implement babyagi, an ai agent that can generate and execute tasks based on a given objective, with the flexibility to swap out specific vectorstores/model providers. -[baby_agi_with_agent.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/baby_agi_with_agent.ipynb) | Swap out the execution chain in the babyagi notebook with an agent that has access to tools, aiming to obtain more reliable information. -[camel_role_playing.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/camel_role_playing.ipynb) | Implement the camel framework for creating autonomous cooperative agents in large-scale language models, using role-playing and inception prompting to guide chat agents towards task completion. -[causal_program_aided_language_...](https://github.com/langchain-ai/langchain/tree/master/cookbook/causal_program_aided_language_model.ipynb) | Implement the causal program-aided language (cpal) chain, which improves upon the program-aided language (pal) by incorporating causal structure to prevent hallucination in language models, particularly when dealing with complex narratives and math problems with nested dependencies. -[code-analysis-deeplake.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/code-analysis-deeplake.ipynb) | Analyze its own code base with the help of gpt and activeloop's deep lake. -[custom_agent_with_plugin_retri...](https://github.com/langchain-ai/langchain/tree/master/cookbook/custom_agent_with_plugin_retrieval.ipynb) | Build a custom agent that can interact with ai plugins by retrieving tools and creating natural language wrappers around openapi endpoints. -[custom_agent_with_plugin_retri...](https://github.com/langchain-ai/langchain/tree/master/cookbook/custom_agent_with_plugin_retrieval_using_plugnplai.ipynb) | Build a custom agent with plugin retrieval functionality, utilizing ai plugins from the `plugnplai` directory. -[databricks_sql_db.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/databricks_sql_db.ipynb) | Connect to databricks runtimes and databricks sql. -[deeplake_semantic_search_over_...](https://github.com/langchain-ai/langchain/tree/master/cookbook/deeplake_semantic_search_over_chat.ipynb) | Perform semantic search and question-answering over a group chat using activeloop's deep lake with gpt4. -[elasticsearch_db_qa.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/elasticsearch_db_qa.ipynb) | Interact with elasticsearch analytics databases in natural language and build search queries via the elasticsearch dsl API. -[extraction_openai_tools.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/extraction_openai_tools.ipynb) | Structured Data Extraction with OpenAI Tools -[forward_looking_retrieval_augm...](https://github.com/langchain-ai/langchain/tree/master/cookbook/forward_looking_retrieval_augmented_generation.ipynb) | Implement the forward-looking active retrieval augmented generation (flare) method, which generates answers to questions, identifies uncertain tokens, generates hypothetical questions based on these tokens, and retrieves relevant documents to continue generating the answer. -[generative_agents_interactive_...](https://github.com/langchain-ai/langchain/tree/master/cookbook/generative_agents_interactive_simulacra_of_human_behavior.ipynb) | Implement a generative agent that simulates human behavior, based on a research paper, using a time-weighted memory object backed by a langchain retriever. -[gymnasium_agent_simulation.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/gymnasium_agent_simulation.ipynb) | Create a simple agent-environment interaction loop in simulated environments like text-based games with gymnasium. -[hugginggpt.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/hugginggpt.ipynb) | Implement hugginggpt, a system that connects language models like chatgpt with the machine learning community via hugging face. -[hypothetical_document_embeddin...](https://github.com/langchain-ai/langchain/tree/master/cookbook/hypothetical_document_embeddings.ipynb) | Improve document indexing with hypothetical document embeddings (hyde), an embedding technique that generates and embeds hypothetical answers to queries. -[learned_prompt_optimization.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/learned_prompt_optimization.ipynb) | Automatically enhance language model prompts by injecting specific terms using reinforcement learning, which can be used to personalize responses based on user preferences. -[llm_bash.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/llm_bash.ipynb) | Perform simple filesystem commands using language learning models (llms) and a bash process. -[llm_checker.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/llm_checker.ipynb) | Create a self-checking chain using the llmcheckerchain function. -[llm_math.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/llm_math.ipynb) | Solve complex word math problems using language models and python repls. -[llm_summarization_checker.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/llm_summarization_checker.ipynb) | Check the accuracy of text summaries, with the option to run the checker multiple times for improved results. -[llm_symbolic_math.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/llm_symbolic_math.ipynb) | Solve algebraic equations with the help of llms (language learning models) and sympy, a python library for symbolic mathematics. -[meta_prompt.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/meta_prompt.ipynb) | Implement the meta-prompt concept, which is a method for building self-improving agents that reflect on their own performance and modify their instructions accordingly. -[multi_modal_output_agent.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/multi_modal_output_agent.ipynb) | Generate multi-modal outputs, specifically images and text. -[multi_modal_RAG_vdms.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/multi_modal_RAG_vdms.ipynb) | Perform retrieval-augmented generation (rag) on documents including text and images, using unstructured for parsing, Intel's Visual Data Management System (VDMS) as the vectorstore, and chains. -[multi_player_dnd.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/multi_player_dnd.ipynb) | Simulate multi-player dungeons & dragons games, with a custom function determining the speaking schedule of the agents. -[multiagent_authoritarian.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/multiagent_authoritarian.ipynb) | Implement a multi-agent simulation where a privileged agent controls the conversation, including deciding who speaks and when the conversation ends, in the context of a simulated news network. -[multiagent_bidding.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/multiagent_bidding.ipynb) | Implement a multi-agent simulation where agents bid to speak, with the highest bidder speaking next, demonstrated through a fictitious presidential debate example. -[myscale_vector_sql.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/myscale_vector_sql.ipynb) | Access and interact with the myscale integrated vector database, which can enhance the performance of language model (llm) applications. -[openai_functions_retrieval_qa....](https://github.com/langchain-ai/langchain/tree/master/cookbook/openai_functions_retrieval_qa.ipynb) | Structure response output in a question-answering system by incorporating openai functions into a retrieval pipeline. -[openai_v1_cookbook.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/openai_v1_cookbook.ipynb) | Explore new functionality released alongside the V1 release of the OpenAI Python library. -[petting_zoo.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/petting_zoo.ipynb) | Create multi-agent simulations with simulated environments using the petting zoo library. -[plan_and_execute_agent.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/plan_and_execute_agent.ipynb) | Create plan-and-execute agents that accomplish objectives by planning tasks with a language model (llm) and executing them with a separate agent. -[press_releases.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/press_releases.ipynb) | Retrieve and query company press release data powered by [Kay.ai](https://kay.ai). -[program_aided_language_model.i...](https://github.com/langchain-ai/langchain/tree/master/cookbook/program_aided_language_model.ipynb) | Implement program-aided language models as described in the provided research paper. -[qa_citations.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/qa_citations.ipynb) | Different ways to get a model to cite its sources. -[rag_upstage_layout_analysis_groundedness_check.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/rag_upstage_layout_analysis_groundedness_check.ipynb) | End-to-end RAG example using Upstage Layout Analysis and Groundedness Check. -[retrieval_in_sql.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/retrieval_in_sql.ipynb) | Perform retrieval-augmented-generation (rag) on a PostgreSQL database using pgvector. -[sales_agent_with_context.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/sales_agent_with_context.ipynb) | Implement a context-aware ai sales agent, salesgpt, that can have natural sales conversations, interact with other systems, and use a product knowledge base to discuss a company's offerings. -[self_query_hotel_search.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/self_query_hotel_search.ipynb) | Build a hotel room search feature with self-querying retrieval, using a specific hotel recommendation dataset. -[smart_llm.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/smart_llm.ipynb) | Implement a smartllmchain, a self-critique chain that generates multiple output proposals, critiques them to find the best one, and then improves upon it to produce a final output. -[tree_of_thought.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/tree_of_thought.ipynb) | Query a large language model using the tree of thought technique. -[twitter-the-algorithm-analysis...](https://github.com/langchain-ai/langchain/tree/master/cookbook/twitter-the-algorithm-analysis-deeplake.ipynb) | Analyze the source code of the Twitter algorithm with the help of gpt4 and activeloop's deep lake. -[two_agent_debate_tools.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/two_agent_debate_tools.ipynb) | Simulate multi-agent dialogues where the agents can utilize various tools. -[two_player_dnd.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/two_player_dnd.ipynb) | Simulate a two-player dungeons & dragons game, where a dialogue simulator class is used to coordinate the dialogue between the protagonist and the dungeon master. -[wikibase_agent.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/wikibase_agent.ipynb) | Create a simple wikibase agent that utilizes sparql generation, with testing done on http://wikidata.org. -[oracleai_demo.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/oracleai_demo.ipynb) | This guide outlines how to utilize Oracle AI Vector Search alongside Langchain for an end-to-end RAG pipeline, providing step-by-step examples. The process includes loading documents from various sources using OracleDocLoader, summarizing them either within or outside the database with OracleSummary, and generating embeddings similarly through OracleEmbeddings. It also covers chunking documents according to specific requirements using Advanced Oracle Capabilities from OracleTextSplitter, and finally, storing and indexing these documents in a Vector Store for querying with OracleVS. -[rag-locally-on-intel-cpu.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/rag-locally-on-intel-cpu.ipynb) | Perform Retrieval-Augmented-Generation (RAG) on locally downloaded open-source models using langchain and open source tools and execute it on Intel Xeon CPU. We showed an example of how to apply RAG on Llama 2 model and enable it to answer the queries related to Intel Q1 2024 earnings release. -[visual_RAG_vdms.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/visual_RAG_vdms.ipynb) | Performs Visual Retrieval-Augmented-Generation (RAG) using videos and scene descriptions generated by open source models. \ No newline at end of file diff --git a/cookbook/extraction.ipynb b/cookbook/extraction.ipynb new file mode 100644 index 0000000000000..cadb7eedf9a28 --- /dev/null +++ b/cookbook/extraction.ipynb @@ -0,0 +1,330 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d28530a6-ddfd-49c0-85dc-b723551f6614", + "metadata": {}, + "source": [ + "# Быстрый старт\n", + "\n", + "Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° инструмСнтов/Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ." + ] + }, + { + "cell_type": "markdown", + "id": "4412def2-38e3-4bd0-bbf0-fb09ff9e5985", + "metadata": {}, + "source": [ + "## ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°\n", + "\n", + "Для получСния [структурированных Π΄Π°Π½Π½Ρ‹Ρ…](/docs/modules/model_io/chat/structured_output) ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ [ΠΌΠΎΠ΄Π΅Π»ΠΈ GigaChat с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ](https://developers.sber.ru/docs/ru/gigachat/models#modeli-dlya-generatsii)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "380c0425-6062-4837-8630-c220240c83b9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" + ] + } + ], + "source": [ + "!pip install langchain_gigachat -q" + ] + }, + { + "cell_type": "markdown", + "id": "54d6b970-2ea3-4192-951e-21237212b359", + "metadata": {}, + "source": [ + "## Π‘Ρ…Π΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ…\n", + "\n", + "Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ трСбуСтся ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· тСкста.\n", + "\n", + "Для описания ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° схСмы ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Pydantic." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c141084c-fb94-4093-8d6a-81175d688e40", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional\n", + "\n", + "from pydantic import BaseModel, Field\n", + "\n", + "\n", + "class Person(BaseModel):\n", + " \"\"\"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅.\"\"\"\n", + "\n", + " # Π”ΠΎΠΊ-строка Π²Ρ‹ΡˆΠ΅, пСрСдаСтся Π² описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ\n", + " # ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ LLM\n", + "\n", + " # ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:\n", + " # * ВсС поля β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (`optional`). Π­Ρ‚ΠΎ позволяСт ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ нСописанныС поля.\n", + " # * Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поля Π΅ΡΡ‚ΡŒ описаниС (`description`), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся Π² модСль, Π² описании Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.\n", + " # Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ пописаниС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ качСство извлСчСния.\n", + " name: Optional[str] = Field(..., description=\"Имя Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°\")\n", + " hair_color: Optional[str] = Field(\n", + " ..., description=\"Π¦Π²Π΅Ρ‚ волос Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π·Π°ΠΏΠΎΠ»Π½ΠΈ Ссли извСстСн\"\n", + " )\n", + " height_in_meters: Optional[float] = Field(\n", + " ..., description=\"Высота Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² ΠΌΠ΅Ρ‚Ρ€Π°Ρ….\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "f248dd54-e36d-435a-b154-394ab4ed6792", + "metadata": {}, + "source": [ + "ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ схСм ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»:\n", + "\n", + "* ΠžΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ саму схСму. Описания ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² модСль ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ качСства извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.\n", + "* НС Π²Ρ‹Π½ΡƒΠΆΠ΄Π°ΠΉΡ‚Π΅ модСль ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (`Optional`), Ρ‡Ρ‚ΠΎ позволяСт ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ `None`, Ссли ΠΎΠ½Π° Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π°.\n", + "\n", + "## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экстрактора\n", + "\n", + "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ дСмонстрируСт ΠΊΠΎΠ΄ экстрактора ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° основС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ схСмы." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "a5e490f6-35ad-455e-8ae4-2bae021583ff", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional\n", + "\n", + "from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "\n", + "# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΡ€ΠΎΠΌΠΏΡ‚: добавляСм инструкции ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ контСкст\n", + "# На этом этапС ΠΌΠΎΠΆΠ½ΠΎ:\n", + "# * Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ качСства извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ\n", + "# * ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ\n", + "prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\n", + " \"system\",\n", + " \"Π’Ρ‹ экспСрт Π² ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· тСкста. \"\n", + " \"ИзвлСкай Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· тСкста. \"\n", + " \"Если Ρ‚Ρ‹ Π½Π΅ знаСшь Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, \"\n", + " \"ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ, ΠΏΠΎΡΡ‚Π°Π²ΡŒ Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ null.\",\n", + " ),\n", + " # О Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ качСство Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²\n", + " # Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² рСкомСндациях\n", + " # MessagesPlaceholder('examples'),\n", + " (\"human\", \"{text}\"),\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "832bf6a1-8e0c-4b6a-aa37-12fe9c42a6d9", + "metadata": {}, + "source": [ + "Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ потрСбуСтся модСль GigaChat с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π²Ρ‹Π·ΠΎΠ²Π° инструмСтов/Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "04d846a6-d5cb-4009-ac19-61e3aac0177e", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_gigachat.chat_models.gigachat import GigaChat\n", + "\n", + "llm = GigaChat(\n", + " credentials=\"YOUT_AUTH_TOKEN\",\n", + " timeout=6000,\n", + " model=\"GigaChat-Max\",\n", + " top_p=0\n", + ")\n", + "\n", + "runnable = prompt | llm.with_structured_output(schema=Person)" + ] + }, + { + "cell_type": "markdown", + "id": "23582c0b-00ed-403f-a10e-3aeabf921f12", + "metadata": {}, + "source": [ + "Π’Ρ‹Π·ΠΎΠ² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "13165ac8-a1dc-44ce-a6ed-f52b577473e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Person(name='Алан Π‘ΠΌΠΈΡ‚', hair_color='Π±Π»ΠΎΠ½Π΄ΠΈΠ½', height_in_meters=1.85)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "text = \"Алан Π‘ΠΌΠΈΡ‚ Π±Π»ΠΎΠ½Π΄ΠΈΠ½, 1.85 ΠΌΠ΅Ρ‚Ρ€Π° высотой\"\n", + "runnable.invoke({\"text\": text})" + ] + }, + { + "cell_type": "markdown", + "id": "28c5ef0c-b8d1-4e12-bd0e-e2528de87fcc", + "metadata": {}, + "source": [ + "## Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сущностСй\n", + "\n", + "Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π·Π°Π΄Π°Ρ‡Π° Π²Π°ΠΌ понадобится ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ· тСкста Π½Π΅ ΠΎΠ΄Π½Ρƒ ΡΡƒΡ‰ΡΠ½ΠΎΡ‚ΡŒ, Π° список.\n", + "\n", + "Для этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pydantic." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "591a0c16-7a17-4883-91ee-0d6d2fdb265c", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List, Optional\n", + "\n", + "from pydantic import BaseModel, Field\n", + "\n", + "\n", + "class Person(BaseModel):\n", + " \"\"\"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅.\"\"\"\n", + "\n", + " # Π”ΠΎΠΊ-строка Π²Ρ‹ΡˆΠ΅, пСрСдаСтся Π² описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ\n", + " # ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ LLM\n", + "\n", + " # ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:\n", + " # * ВсС поля β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (`optional`). Π­Ρ‚ΠΎ позволяСт ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ нСописанныС поля.\n", + " # * Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поля Π΅ΡΡ‚ΡŒ описаниС (`description`), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся Π² модСль, Π² описании Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.\n", + " # Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ пописаниС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ качСство извлСчСния.\n", + " name: Optional[str] = Field(..., description=\"Имя Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°\")\n", + " hair_color: Optional[str] = Field(\n", + " ..., description=\"Π¦Π²Π΅Ρ‚ волос Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π·Π°ΠΏΠΎΠ»Π½ΠΈ Ссли извСстСн\"\n", + " )\n", + " height_in_meters: Optional[float] = Field(\n", + " ..., description=\"Высота Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² ΠΌΠ΅Ρ‚Ρ€Π°Ρ….\"\n", + " )\n", + "\n", + "\n", + "class Data(BaseModel):\n", + " \"\"\"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Π»ΡŽΠ΄ΡΡ….\"\"\"\n", + "\n", + " # Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»ΡŽΠ΄ΡΡ…\n", + " people: List[Person]" + ] + }, + { + "cell_type": "markdown", + "id": "5f5cda33-fd7b-481e-956a-703f45e40e1d", + "metadata": {}, + "source": [ + ":::important\n", + "\n", + "Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ прСдставлСн ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ самоС высокоС качСство.\n", + "\n", + "Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Руководства Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ качСство извлСчСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².\n", + "\n", + ":::" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "cf7062cc-1d1d-4a37-9122-509d1b87f0a6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Data(people=[Person(name='Π”ΠΆΠΎ', hair_color='Ρ‡Π΅Ρ€Π½Ρ‹Π΅', height_in_meters=1.75), Person(name='Анна', hair_color='Ρ‡Π΅Ρ€Π½Ρ‹Π΅', height_in_meters=1.65)])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "runnable = prompt | llm.with_structured_output(schema=Data)\n", + "text = (\n", + " \"МоС имя Π”ΠΆΠΎ, ΠΌΠΎΠΈ волосы Ρ‡Π΅Ρ€Π½Ρ‹Π΅ ΠΈ я 1.75 ΠΌΠ΅Ρ‚Ρ€Π° высотой. \"\n", + " \"Π£ Анны Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ волосы ΠΊΠ°ΠΊ Ρƒ мСня ΠΈ ΠΎΠ½Π° Π½Π° 10 сантимСтров мСньшС мСня.\"\n", + ")\n", + "runnable.invoke({\"text\": text})" + ] + }, + { + "cell_type": "markdown", + "id": "fba1d770-bf4d-4de4-9e4f-7384872ef0dc", + "metadata": {}, + "source": [ + ":::note\n", + "\n", + "Когда схСма ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сущностСй, ΠΎΠ½Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ сущности ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ пустой список, Ссли Π² тСкстС Π½Π΅Ρ‚ подходящих Π΄Π°Π½Π½Ρ‹Ρ….\n", + "\n", + "Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ позволяСт явно Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ сущности Π±Π΅Π· нСобходимости Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒ модСль ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ.\n", + "\n", + ":::" + ] + }, + { + "cell_type": "markdown", + "id": "f07a7455-7de6-4a6f-9772-0477ef65e3dc", + "metadata": {}, + "source": [ + "## Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅\n", + "\n", + "* Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ ΠΊΠΎΠ΄Π°](/docs/use_cases/extraction/how_to/examples) для Π±ΠΎΠ»Π΅Π΅ эффСктивного извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.\n", + "* Π£Π·Π½Π°ΠΉΡ‚Π΅ [Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ](/docs/use_cases/extraction/how_to/handle_long_text), ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ тСкста ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ объСм контСкста ΠΌΠΎΠ΄Π΅Π»ΠΈ.\n", + "* Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ парсСры GigaChain для [извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²](/docs/use_cases/extraction/how_to/handle_files) Π²Ρ€ΠΎΠ΄Π΅ PDF.\n", + "* ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с [ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ получСния структурированной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ](/docs/use_cases/extraction/how_to/parse) ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с инструмСнтами ΠΈΠ»ΠΈ функциями. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/cookbook/gigachat_functions_agent.ipynb b/cookbook/gigachat_functions_agent.ipynb new file mode 100644 index 0000000000000..1d225107bedac --- /dev/null +++ b/cookbook/gigachat_functions_agent.ipynb @@ -0,0 +1,1198 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "3ea857b1", + "metadata": {}, + "source": [ + "# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π³Π΅Π½Ρ‚Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с функциями GigaChat\n", + "\n", + "Π’ Ρ€Π°Π΄Π΅Π»Π΅ приводится ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания Π°Π³Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GigaChat.\n", + "\n", + ":::note\n", + "\n", + "ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ функциях β€” Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ GigaChat API [Π Π°Π±ΠΎΡ‚Π° с функциями](https://developers.sber.ru/docs/ru/gigachat/api/function-calling).\n", + "\n", + ":::\n", + "\n", + "Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π°Π³Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с трСмя функциями:\n", + "\n", + "* расчСта расстояния;\n", + "* ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ SMS-сообщСния;\n", + "* поиска Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ².\n", + "\n", + "Π’Π°ΠΊΠΆΠ΅ Π² этом Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π΄ΠΎΠΏ. ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ" + ] + }, + { + "cell_type": "markdown", + "id": "5e7543fa", + "metadata": {}, + "source": [ + "## ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅\n", + "\n", + "Установка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚ с GigaChat" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b6d00af1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" + ] + } + ], + "source": [ + "!pip install -U langchain_gigachat langgraph -q" + ] + }, + { + "cell_type": "markdown", + "id": "eb9d8c0a", + "metadata": {}, + "source": [ + "ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π°Π³Π΅Π½Ρ‚Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ GigaChat.\n", + "\n", + "Для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ модСль GigaChat-Pro ΠΈΠ»ΠΈ Max.\n", + "Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· доступных [ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ](https://developers.sber.ru/docs/ru/gigachat/models).\n", + "\n", + "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ для доступа ΠΊ GigaChat API Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° сайтС [developers.sber.ru](https://developers.sber.ru)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "205da1a7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Π’ случаС, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» .env для настройки Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, раскоммСнтируйтС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки\n", + "# !pip install python-dotenv -q\n", + "# from dotenv import find_dotenv, load_dotenv\n", + "# load_dotenv(find_dotenv())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b36cd44e", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_gigachat.chat_models import GigaChat\n", + "\n", + "giga = GigaChat(\n", + " credentials=\"ВАШ AUTHORIZATION KEY\", model=\"GigaChat-Pro\", verify_ssl_certs=False\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "f986347a", + "metadata": {}, + "source": [ + "## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ\n", + "\n", + "Для создания ΠΈ поисания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ смоТСт Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ модСль ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ `@tool`.\n", + "\n", + ":::tip\n", + "\n", + "МодСли GigaChat Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ описаны согласно ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ.\n", + "ΠŸΡ€ΠΈ описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ удСляйтС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ описанию структуры Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΅Π΅ использования.\n", + "\n", + "[НиТС](#functions-descriptions-example) Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ…ΠΎΡ€ΠΎΡˆΠΎ описанных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.\n", + "\n", + ":::\n", + "\n", + "### ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ БМБ-сообщСний" + ] + }, + { + "cell_type": "markdown", + "id": "d10f9f28", + "metadata": {}, + "source": [ + "Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ `@giga_tool` являСтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° `@tool` ΠΈΠ· LangChain, Π½ΠΎ добавляСт ΠΊ Π½Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ few-shot." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "921afeaa", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_gigachat.tools.giga_tool import giga_tool\n", + "from pydantic import BaseModel, Field\n", + "\n", + "\n", + "class SendSmsResult(BaseModel):\n", + " status: str = Field(description=\"Бтатус ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния\")\n", + " message: str = Field(description=\"Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ SMS\")\n", + "\n", + "\n", + "few_shot_examples = [\n", + " {\n", + " \"request\": \"МоТСшь Π»ΠΈ Ρ‚Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ SMS-сообщСниС Π½Π° Π½ΠΎΠΌΠ΅Ρ€ 123456789 с содСрТимым 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°?'\",\n", + " \"params\": {\"recipient\": \"123456789\", \"message\": \"ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°?\"},\n", + " }\n", + "]\n", + "\n", + "\n", + "@giga_tool(few_shot_examples=few_shot_examples)\n", + "def send_sms(\n", + " recipient: str = Field(description=\"НомСр Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° получатСля\"),\n", + " message: str = Field(description=\"Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ сообщСния\"),\n", + ") -> SendSmsResult:\n", + " \"\"\"ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ SMS-сообщСниС\"\"\"\n", + " print(f\"! send_sms to {recipient}, text: {message}\")\n", + " # Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° БМБ Ρ‡Π΅Ρ€Π΅Π· внСшний шлюз\n", + " return SendSmsResult(status=\"OK\", message=\"Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ!\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "66be09d6", + "metadata": {}, + "source": [ + "## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π³Π΅Π½Ρ‚Π°\n", + "\n", + "Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π³Π΅Π½Ρ‚Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ create_react_agent ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° langgraph" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "53926a48", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "! send_sms to 2223334445, text: ΠΏΡ€ΠΈΠ²Π΅Ρ‚\n" + ] + }, + { + "data": { + "text/plain": [ + "'Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с тСкстом \"ΠΏΡ€ΠΈΠ²Π΅Ρ‚\" Π±Ρ‹Π»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π½Π° Π½ΠΎΠΌΠ΅Ρ€ 2223334445.'" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from langchain_core.messages import AIMessage, HumanMessage, SystemMessage\n", + "from langgraph.prebuilt import create_react_agent\n", + "\n", + "functions = [send_sms]\n", + "giga_with_functions = giga.bind_functions(functions)\n", + "\n", + "agent_executor = create_react_agent(giga_with_functions, functions)\n", + "resp = agent_executor.invoke({\"messages\": [HumanMessage(content=\"ΠžΡ‚ΠΏΡ€Π°Π²ΡŒ смс с тСкстом ΠΏΡ€ΠΈΠ²Π΅Ρ‚ Π½Π° Π½ΠΎΠΌΠ΅Ρ€ 2223334445\")]})\n", + "resp['messages'][-1].content" + ] + }, + { + "cell_type": "markdown", + "id": "84443c6f", + "metadata": {}, + "source": [ + "Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π°Π³Π΅Π½Ρ‚Π° с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ для вСдСния Ρ‡Π°Ρ‚ΠΎΠ²" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "af0398d5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "User: ΠŸΡ€ΠΈΠ²Π΅Ρ‚\n", + "\u001b[93mBot: ЗдравствуйтС! Как я ΠΌΠΎΠ³Ρƒ Π’Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ сСгодня?\u001b[0m\n", + "User: Π§Ρ‚ΠΎ Ρ‚Ρ‹ ΡƒΠΌΠ΅Π΅ΡˆΡŒ?\n", + "\u001b[93mBot: Π― ΠΌΠΎΠ³Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ SMS-сообщСния. ΠœΠΎΠ³Ρƒ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π’Π°ΠΌ с этим?\u001b[0m\n", + "User: Π₯ΠΎΡ‡Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ смс\n", + "\u001b[93mBot: ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠΌΠΎΡ‡ΡŒ с этим. НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π’Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ½Π΅ Π½ΠΎΠΌΠ΅Ρ€ получатСля ΠΈ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ?\u001b[0m\n", + "User: На Π½ΠΎΠΌΠ΅Ρ€ 111222333444\n", + "\u001b[93mBot: ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ тСкст сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° этот Π½ΠΎΠΌΠ΅Ρ€.\u001b[0m\n", + "User: Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ - ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚!\n", + "! send_sms to 111222333444, text: ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚!\n", + "\u001b[93mBot: Π’Π°ΡˆΠ΅ сообщСниС \"ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚!\" Π±Ρ‹Π»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π½Π° Π½ΠΎΠΌΠ΅Ρ€ 111222333444.\u001b[0m\n" + ] + } + ], + "source": [ + "import time\n", + "from langgraph.checkpoint.memory import MemorySaver\n", + "\n", + "agent_executor = create_react_agent(giga_with_functions, \n", + " functions, \n", + " checkpointer=MemorySaver(),\n", + " state_modifier=\"\"\"Π’Ρ‹ Π±ΠΎΡ‚ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ смс. \n", + "Бпроси Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ.\"\"\")\n", + "\n", + "def chat(agent_executor, thread_id: str):\n", + " config = {\"configurable\": {\"thread_id\": thread_id}}\n", + "\n", + " while True:\n", + " user_input = input(\"ΠšΠ»ΠΈΠ΅Π½Ρ‚: \")\n", + " if user_input == \"\":\n", + " break\n", + " print(f\"User: {user_input}\")\n", + " resp = agent_executor.invoke({\"messages\": [HumanMessage(content=user_input)]}, config=config)\n", + " bot_answer = resp['messages'][-1].content\n", + " print(\"\\033[93m\" + f\"Bot: {bot_answer}\" + \"\\033[0m\")\n", + " time.sleep(1) # Fix bug in Jupyter Notebook for VSCode\n", + "\n", + "chat(agent_executor, \"id_1\")" + ] + }, + { + "cell_type": "markdown", + "id": "904b74a9", + "metadata": {}, + "source": [ + "## Π Π°Π±ΠΎΡ‚Π° с нСсколькими функциями\n", + "\n", + "ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Ρ‰Π΅ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: для поиска Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² ΠΈ для расчСта расстояния.\n", + "\n", + "### Ѐункция поиска Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ²\n", + "\n", + "Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ приводится функцися посика Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² Π½Π° основС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "b5177fcd", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List, Optional\n", + "\n", + "\n", + "class SearchMoviesResult(BaseModel):\n", + " movies: List[str] = Field(\n", + " description=\"Бписок Π½Π°Π·Π²Π°Π½ΠΈΠΉ Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ критСриям поиска\"\n", + " )\n", + "\n", + "\n", + "few_shot_examples = [\n", + " {\"request\": \"Найди всС Ρ„ΠΈΠ»ΡŒΠΌΡ‹ ΠΆΠ°Π½Ρ€Π° комСдия\", \"params\": {\"genre\": \"комСдия\"}}\n", + "]\n", + "\n", + "\n", + "@giga_tool(few_shot_examples=few_shot_examples)\n", + "def search_movies(\n", + " genre: Optional[str] = Field(None, description=\"Π–Π°Π½Ρ€ Ρ„ΠΈΠ»ΡŒΠΌΠ°\"),\n", + " year: Optional[int] = Field(None, description=\"Π“ΠΎΠ΄ выпуска Ρ„ΠΈΠ»ΡŒΠΌΠ°\"),\n", + " actor: Optional[str] = Field(None, description=\"Имя Π°ΠΊΡ‚Π΅Ρ€Π°, снимавшСгося Π² Ρ„ΠΈΠ»ΡŒΠΌΠ΅\"),\n", + ") -> SearchMoviesResult:\n", + " \"\"\"Поиск Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² Π½Π° основС Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π²\"\"\"\n", + " print(f\"! search_movies genre {genre}, year: {year}, actor: {actor}\")\n", + " # Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° БМБ Ρ‡Π΅Ρ€Π΅Π· внСшний шлюз\n", + " return SearchMoviesResult(movies=[\"ΠžΠΏΠ΅Π½Π³Π΅ΠΉΠΌΠ΅Ρ€\"])" + ] + }, + { + "cell_type": "markdown", + "id": "de13f00b", + "metadata": {}, + "source": [ + "### Ѐункция расчСта расстояний\n", + "\n", + "Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ приводится функция, которая вычисляСт расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΡƒΠΊΡ‚Π°ΠΌΠΈ." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "891a896e", + "metadata": {}, + "outputs": [], + "source": [ + "class TripDistanceResult(BaseModel):\n", + " distance: int = Field(\n", + " description=\"РасстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ мСстополоТСниСм Π² ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€Π°Ρ…\"\n", + " )\n", + "\n", + "\n", + "few_shot_examples = [\n", + " {\n", + " \"request\": \"Насколько Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ ΠœΠΎΡΠΊΠ²Ρ‹ Π΄ΠΎ Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π°?\",\n", + " \"params\": {\"start_location\": \"Москва\", \"end_location\": \"Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³\"},\n", + " }\n", + "]\n", + "\n", + "\n", + "@giga_tool(few_shot_examples=few_shot_examples)\n", + "def calculate_trip_distance(\n", + " start_location: str = Field(description=\"ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ мСстополоТСниС\"),\n", + " end_location: str = Field(description=\"ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ мСстополоТСниС\"),\n", + ") -> TripDistanceResult:\n", + " \"\"\"Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя мСстополоТСниями.\"\"\"\n", + " print(\n", + " f\"! calculate_trip_distance start_location {start_location}, end_location: {end_location}\"\n", + " )\n", + " return TripDistanceResult(distance=650)" + ] + }, + { + "cell_type": "markdown", + "id": "a0f01b2b", + "metadata": {}, + "source": [ + "ΠŸΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π°Π³Π΅Π½Ρ‚ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π½Π΅ΠΌΡƒ с подходящими запросами." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e3ddc5dd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "User: Найди Ρ„ΠΈΠ»ΡŒΠΌΡ‹ Π² ΠΆΠ°Π½Ρ€Π΅ биография 2023 Π³ΠΎΠ΄Π°\n", + "! search_movies genre биография, year: 2023, actor: annotation=Union[str, NoneType] required=False default=None description='Имя Π°ΠΊΡ‚Π΅Ρ€Π°, снимавшСгося Π² Ρ„ΠΈΠ»ΡŒΠΌΠ΅'\n", + "\u001b[93mBot: Π’ 2023 Π³ΠΎΠ΄Ρƒ Π²Ρ‹ΡˆΠ΅Π» Ρ„ΠΈΠ»ΡŒΠΌ Π² ΠΆΠ°Π½Ρ€Π΅ Π±ΠΈΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ \"ΠžΠΏΠ΅Π½Π³Π΅ΠΉΠΌΠ΅Ρ€\".\u001b[0m\n", + "User: РасстояниС ΠΎΡ‚ ΠœΠΎΡΠΊΠ²Ρ‹ Π΄ΠΎ ΠŸΠΈΡ‚Π΅Ρ€Π°\n", + "! calculate_trip_distance start_location Москва, end_location: Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³\n", + "\u001b[93mBot: РасстояниС ΠΏΠΎ Π΄ΠΎΡ€ΠΎΠ³Π΅ ΠΎΡ‚ ΠœΠΎΡΠΊΠ²Ρ‹ Π΄ΠΎ Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π° составляСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 650 ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€ΠΎΠ².\u001b[0m\n" + ] + } + ], + "source": [ + "functions = [send_sms, search_movies, calculate_trip_distance]\n", + "giga_with_functions = giga.bind_functions(functions)\n", + "agent_executor = create_react_agent(giga_with_functions, \n", + " functions, \n", + " checkpointer=MemorySaver())\n", + "\n", + "chat(agent_executor, thread_id=\"id_321\")" + ] + }, + { + "cell_type": "markdown", + "id": "7fb27b941602401d91542211134fc71a", + "metadata": { + "collapsed": false + }, + "source": [ + "## Ѐункция Ρ€Π΅Π°ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚\n", + "Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ рассмотрим созданиС Ρ‚ΡƒΠ»ΠΎΠ², Ρ‡Π΅Ρ€Π΅Π· класс BaseTool.\n", + "Π§Π΅Ρ€Π΅Π· наслСдованиС класса BaseTool, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΡƒΠ»Ρ‹ с async Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.\n", + "\n", + "πŸš¨ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ прСобразования Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ условия:\n", + "- Π£ всСх ΠΏΠΎΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ Ρ‚ΠΈΠΏ\n", + "- Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Optional поля Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ default значСния" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "acae54e37e7d407bbb7b55eff062a284", + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from typing import Literal, Optional, Type\n", + "\n", + "from langchain_core.callbacks import CallbackManagerForToolRun\n", + "from langchain_core.tools import BaseTool\n", + "from langchain_gigachat.tools.giga_tool import FewShotExamples\n", + "\n", + "\n", + "class PlayerReactionsInput(BaseModel):\n", + " reaction: Literal[\"add_like\", \"remove_like\", \"add_dislike\"] = Field(\n", + " description=\"\"\"ДСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ:\n", + "- add_like - ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π»Π°ΠΉΠΊ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ΅, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ;\n", + "- remove_like - ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π»Π°ΠΉΠΊ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π°ΡƒΠ΄ΠΈΠΎΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ;\n", + "- add_dislike - ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΈΠ·Π»Π°ΠΉΠΊ, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΡΠ»ΡƒΠ΄ΡƒΡŽΡ‰ΠΈΠΉ.\n", + "ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ add_dislike устанавливаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно проявляСт Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ. Если ΠΎΠ½ просто просит ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅ΠΊ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ, Ρ‚ΠΎ это Π½Π΅ являСтся Ρ€Π΅Π°ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.\"\"\" # noqa\n", + " )\n", + " content_type: Optional[\n", + " Literal[\n", + " \"track\",\n", + " \"artist\",\n", + " \"album\",\n", + " \"playlist\",\n", + " \"release\",\n", + " \"podcast\",\n", + " \"podcast_episode\",\n", + " \"audiobook\",\n", + " \"audiobook_chapter\",\n", + " ]\n", + " ] = Field(\n", + " description=(\n", + " \"Π’ΠΈΠΏ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ примСняСтся дСйствиС Π² соотвСтствии с запросом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. \" # noqa\n", + " \"ЗаполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно ΡƒΠΊΠ°Π·Π°Π» Ρ‚ΠΈΠΏ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.\"\n", + " )\n", + " )\n", + "\n", + "\n", + "class PlayerReactionsOutput(BaseModel):\n", + " status: Literal[\"success\", \"fail\"] = Field(\n", + " description=\"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ дСйствиС\"\n", + " )\n", + " error: Optional[str] = Field(\n", + " description=\"ВСкст ошибки Π² случаС, Ссли status == fail\", default=None\n", + " )\n", + "\n", + "\n", + "class PlayerReactionsTool(BaseTool):\n", + " name: str = \"player_reactions\"\n", + " description: str = (\n", + " \"Ѐункция ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚. \"\n", + " \"Ѐункция вызываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС, Ссли Π½Π° устройствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.\\n\" # noqa\n", + " \"Π’ случаС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΠΎΠ½ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ.\\n\" # noqa\n", + " \"Π’ случаС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ. \" # noqa\n", + " \"Π’ своСм ΠΎΡ‚Π²Π΅Ρ‚Π΅ сообщи ΠΎΠ± этом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.\\n\"\n", + " \"ПослС Π²Ρ‹Π·ΠΎΠ²Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΠΉ Π² соотвСтствии со своим Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΎΠΌ, \"\n", + " \"Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ, Π½ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ (Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 7 слов) ΠΈ Π½Π΅ Π·Π°Π΄Π°Π²Π°ΠΉ вопросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, \"\n", + " \"Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.\\n\"\n", + " \"Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΆΠ΅ оставлял Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Π½Π° ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, \"\n", + " \"Ρ‚ΠΎ информация ΠΎΠ± этом Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° Π² ΠΏΠΎΠ»Π΅ error. \"\n", + " \"Π’ случаС ошибки ΠΎΡ‚Π²Π΅Ρ‡Π°ΠΉ Π² соотвСтствии со своим Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΎΠΌ ΠΈ тСкстом ΠΈΠ· поля error.\" # noqa\n", + " )\n", + " args_schema: Type[BaseModel] = PlayerReactionsInput\n", + " return_schema: Type[BaseModel] = PlayerReactionsOutput\n", + " few_shot_examples: FewShotExamples = [\n", + " {\"request\": \"Π›Π°ΠΉΠΊ\", \"params\": {\"reaction\": \"add_like\"}},\n", + " {\"request\": \"Π”ΠΈΠ·Π»Π°ΠΉΠΊ\", \"params\": {\"reaction\": \"add_dislike\"}},\n", + " {\"request\": \"ΡƒΠ±Π΅Ρ€ΠΈ Π»Π°ΠΉΠΊ\", \"params\": {\"reaction\": \"remove_like\"}},\n", + " {\"request\": \"добавь Π² плСйлист\", \"params\": {\"reaction\": \"add_like\"}},\n", + " {\"request\": \"ΡƒΠ΄Π°Π»ΠΈ ΠΈΠ· плСйлиста\", \"params\": {\"reaction\": \"remove_like\"}},\n", + " {\n", + " \"request\": \"Π”ΠΎΠ±Π°Π²ΡŒ артиста Π² ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ΅\",\n", + " \"params\": {\"reaction\": \"add_like\", \"content_type\": \"artist\"},\n", + " },\n", + " {\n", + " \"request\": \"МнС нравится это альбом\",\n", + " \"params\": {\"reaction\": \"add_like\", \"content_type\": \"album\"},\n", + " },\n", + " ]\n", + "\n", + " def _run(\n", + " self,\n", + " reaction: str,\n", + " content_type: Optional[str] = None,\n", + " run_manager: Optional[CallbackManagerForToolRun] = None,\n", + " ) -> PlayerReactionsOutput:\n", + " \"\"\"Use the tool.\"\"\"\n", + " print(f\"! player_reaction reaction {reaction}, content_type: {content_type}\")\n", + " if reaction == \"add_dislike\":\n", + " return PlayerReactionsOutput(status=\"fail\", error=\"Π”ΠΈΠ·Π»Π°ΠΉΠΊΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ\")\n", + " return PlayerReactionsOutput(status=\"success\")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "9a63283cbaf04dbcab1f6479b197f3a8", + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "User: Π›Π°ΠΉΠΊ этому Ρ‚Ρ€Π΅ΠΊΡƒ\n", + "! player_reaction reaction add_like, content_type: track\n", + "\u001b[93mBot: Π’Π°Ρˆ Π»Π°ΠΉΠΊ зафиксирован! Π’Ρ€Π΅ΠΊ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ.\u001b[0m\n", + "User: ΠŸΠΎΡΡ‚Π°Π²ΡŒ Π΄ΠΈΠ·Π»Π°ΠΉΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Π°Π»ΡŒΠ±ΠΎΠΌΡƒ\n", + "! player_reaction reaction add_dislike, content_type: album\n", + "\u001b[93mBot: Ой, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΠΎΡ…ΠΎΠΆΠ΅, Π΄ΠΈΠ·Π»Π°ΠΉΠΊΠΈ для альбомов сСйчас нСдоступны. ΠœΠΎΠΆΠ΅Ρ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π·?\u001b[0m\n" + ] + } + ], + "source": [ + "functions = [PlayerReactionsTool()]\n", + "giga_with_functions = giga.bind_functions(functions)\n", + "agent_executor = create_react_agent(giga_with_functions, \n", + " functions, \n", + " checkpointer=MemorySaver(), debug=False)\n", + "\n", + "chat(agent_executor, thread_id=\"id_324\")" + ] + }, + { + "cell_type": "markdown", + "id": "8dd0d8092fe74a7c96281538738b07e2", + "metadata": { + "collapsed": false + }, + "source": [ + "## Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚ΡƒΠ»ΠΎΠ² (Π±Π΅Π· запуска)\n", + "### ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "72eea5119410473aa328ad9291626812", + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ классу подкладываСтся Π² JSON Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΡΡ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ\n", + "# Π² ΠΏΠΎΠ»Π΅ \"description\"\n", + "class Reminder(BaseModel):\n", + " \"\"\"ΠœΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ напоминания.\"\"\"\n", + "\n", + " id: Optional[str] = Field(description=\"Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ напоминания.\", default=None)\n", + " cron: Optional[str] = Field(\n", + " description=(\n", + " \"ОписаниС пСриодичности напоминания. \"\n", + " \"Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ΅ описаниС пСрСодичности напоминания. \"\n", + " \"Если ΠΏΠΎΠ»Π΅ отсутствуСт, Ρ‚ΠΎ Ρƒ напоминания Π½Π΅Ρ‚ пСриодичности (Π΅Π΄ΠΈΠ½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ΅).\"\n", + " ), default=None\n", + " )\n", + " title: Optional[str] = Field(\n", + " description=\"НазваниС напоминания, ΠΎ Ρ‡Π΅ΠΌ Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ.\", default=None\n", + " )\n", + " devices: Optional[List[str]] = Field(\n", + " description=\"Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ устройств, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ привязаны напоминания\", default=None\n", + " )\n", + " reminderTime: Optional[str] = Field(description=\"Π”Π°Ρ‚Π° ΠΈ врСмя старта напоминания.\", default=None)\n", + " createdAt: Optional[str] = Field(description=\"Π”Π°Ρ‚Π° ΠΈ врСмя создания напоминания.\", default=None)\n", + "\n", + "\n", + "class GetReminderInput(BaseModel):\n", + " title: Optional[str] = Field(description=\"ВСкст напоминания\", default=None)\n", + " date_time: Optional[str] = Field(\n", + " description=\"ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя ΠΈ Π΄Π°Ρ‚Π° напоминания Π½Π° русском языкС\", default=None\n", + " )\n", + " device_name: Optional[str] = Field(\n", + " description=\"НазваниС устройства, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\", default=None\n", + " )\n", + " room: Optional[str] = Field(\n", + " description=\"НазваниС ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\", default=None\n", + " )\n", + "\n", + "\n", + "class GetReminderOutput(BaseModel):\n", + " \"\"\"ΠžΡ‚Π²Π΅Ρ‚ Π½Π° get_reminder\"\"\"\n", + "\n", + " status: Literal[\"success\", \"fail\"] = Field(\n", + " description=\"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ список установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\", default=None\n", + " )\n", + " error: Optional[str] = Field(\n", + " description=\"ВСкст ошибки Π² случаС, Ссли status == fail\", default=None\n", + " )\n", + " items: Optional[List[Reminder]] = Field(\n", + " description=(\n", + " \"Бписок установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ. \"\n", + " \"Π’ спискС пСрСчислСны ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ (id), \"\n", + " \"Π΄Π°Ρ‚Π° ΠΈ врСмя старта напоминания (reminderTime), \"\n", + " \"ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ напоминания Π² Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (cron), \"\n", + " \"Π½Π°Π·Π²Π°Π½ΠΈΠ΅ напоминания (title), \"\n", + " \"Π΄Π°Ρ‚Π° ΠΈ врСмя создания напоминания (createdAt).\"\n", + " ), default=None\n", + " )\n", + "\n", + "\n", + "class GetReminderTool(BaseTool):\n", + " name: str = \"get_reminder\"\n", + " description: str = (\n", + " \"ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх установлСнных напоминаниях. \" # noqa\n", + " \"Π’Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ id Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ. \" # noqa\n", + " \"Π’ случаС Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id, \" # noqa\n", + " \"Ρ‚ΠΎ сначала Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для получСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° id ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ пустым сообщСниСм, \" # noqa\n", + " \"Π° Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹Π·ΠΎΠ²ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для выполнСния запроса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\\n\" # noqa\n", + " \"ПослС Π²Ρ‹Π·ΠΎΠ²Π° Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ стилС: \" # noqa\n", + " '\"Π£ вас установлСно 2 напоминания. Π§Π΅Ρ€Π΅Π· 10 ΠΌΠΈΠ½ΡƒΡ‚ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄ΡƒΡ…ΠΎΠ²ΠΊΡƒ Π½Π° ΠΊΡƒΡ…Π½Π΅, Π° Π·Π°Π²Ρ‚Ρ€Π° Π² 3 часа ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² гости.' # noqa\n", + " )\n", + " args_schema: Type[BaseModel] = GetReminderInput\n", + " return_schema: Type[BaseModel] = GetReminderOutput\n", + " few_shot_examples: FewShotExamples = [\n", + " {\"request\": \"ΠΌΠΎΠΈ напоминания\", \"params\": {}},\n", + " {\"request\": \"ΡƒΠ΄Π°Π»ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΊΡƒ Π½Π° Π·Π°Π²Ρ‚Ρ€Π° Π² ΠΏΡΡ‚ΡŒ\", \"params\": {}},\n", + " {\n", + " \"request\": \"пСрСнСси Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π΄Ρ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ°ΠΌΡƒ Π½Π° ΡˆΠ΅ΡΡ‚ΡŒ Π²Π΅Ρ‡Π΅Ρ€Π°\",\n", + " \"params\": {},\n", + " },\n", + " {\"request\": \"ΠΊΠ°ΠΊΠΎΠ΅ Ρƒ мСня количСство Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\", \"params\": {}},\n", + " {\"request\": \"ΠΎΠ·Π²ΡƒΡ‡ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΊΠΈ\", \"params\": {}},\n", + " ]\n", + "\n", + " def _run(\n", + " self,\n", + " title: Optional[str] = None,\n", + " date_time: Optional[str] = None,\n", + " device_name: Optional[str] = None,\n", + " room: Optional[str] = None,\n", + " run_manager: Optional[CallbackManagerForToolRun] = None,\n", + " ) -> GetReminderOutput:\n", + " \"\"\"Π›ΠΎΠ³ΠΈΠΊΠ° Ρ‚ΡƒΠ»Π°\"\"\"\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "8edb47106e1a46a883d545849b8ab81b", + "metadata": { + "collapsed": false + }, + "source": [ + "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ схСму, которая гСнСрируСтся для API GigaChat" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "10185d26023b46108eb7d9f57d49d2b3", + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"name\": \"get_reminder\",\n", + " \"description\": \"ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх установлСнных напоминаниях. Π’Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ id Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ. Π’ случаС Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id, Ρ‚ΠΎ сначала Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для получСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° id ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ пустым сообщСниСм, Π° Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹Π·ΠΎΠ²ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для выполнСния запроса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\\nПослС Π²Ρ‹Π·ΠΎΠ²Π° Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ стилС: \\\"Π£ вас установлСно 2 напоминания. Π§Π΅Ρ€Π΅Π· 10 ΠΌΠΈΠ½ΡƒΡ‚ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄ΡƒΡ…ΠΎΠ²ΠΊΡƒ Π½Π° ΠΊΡƒΡ…Π½Π΅, Π° Π·Π°Π²Ρ‚Ρ€Π° Π² 3 часа ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² гости.\",\n", + " \"parameters\": {\n", + " \"description\": \"ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх установлСнных напоминаниях. Π’Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ id Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ. Π’ случаС Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id, Ρ‚ΠΎ сначала Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для получСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° id ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ пустым сообщСниСм, Π° Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹Π·ΠΎΠ²ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для выполнСния запроса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\\nПослС Π²Ρ‹Π·ΠΎΠ²Π° Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ стилС: \\\"Π£ вас установлСно 2 напоминания. Π§Π΅Ρ€Π΅Π· 10 ΠΌΠΈΠ½ΡƒΡ‚ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄ΡƒΡ…ΠΎΠ²ΠΊΡƒ Π½Π° ΠΊΡƒΡ…Π½Π΅, Π° Π·Π°Π²Ρ‚Ρ€Π° Π² 3 часа ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² гости.\",\n", + " \"properties\": {\n", + " \"title\": {\n", + " \"default\": null,\n", + " \"description\": \"ВСкст напоминания\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"date_time\": {\n", + " \"default\": null,\n", + " \"description\": \"ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя ΠΈ Π΄Π°Ρ‚Π° напоминания Π½Π° русском языкС\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"device_name\": {\n", + " \"default\": null,\n", + " \"description\": \"НазваниС устройства, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"room\": {\n", + " \"default\": null,\n", + " \"description\": \"НазваниС ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\",\n", + " \"type\": \"string\"\n", + " }\n", + " },\n", + " \"type\": \"object\"\n", + " },\n", + " \"return_parameters\": {\n", + " \"description\": \"ΠžΡ‚Π²Π΅Ρ‚ Π½Π° get_reminder\",\n", + " \"properties\": {\n", + " \"status\": {\n", + " \"default\": null,\n", + " \"description\": \"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ список установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\",\n", + " \"enum\": [\n", + " \"success\",\n", + " \"fail\"\n", + " ],\n", + " \"type\": \"string\"\n", + " },\n", + " \"error\": {\n", + " \"default\": null,\n", + " \"description\": \"ВСкст ошибки Π² случаС, Ссли status == fail\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"items\": {\n", + " \"default\": null,\n", + " \"description\": \"Бписок установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ. Π’ спискС пСрСчислСны ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ (id), Π΄Π°Ρ‚Π° ΠΈ врСмя старта напоминания (reminderTime), ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ напоминания Π² Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (cron), Π½Π°Π·Π²Π°Π½ΠΈΠ΅ напоминания (title), Π΄Π°Ρ‚Π° ΠΈ врСмя создания напоминания (createdAt).\",\n", + " \"items\": {\n", + " \"description\": \"ΠœΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ напоминания.\",\n", + " \"properties\": {\n", + " \"id\": {\n", + " \"default\": null,\n", + " \"description\": \"Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ напоминания.\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"cron\": {\n", + " \"default\": null,\n", + " \"description\": \"ОписаниС пСриодичности напоминания. Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ΅ описаниС пСрСодичности напоминания. Если ΠΏΠΎΠ»Π΅ отсутствуСт, Ρ‚ΠΎ Ρƒ напоминания Π½Π΅Ρ‚ пСриодичности (Π΅Π΄ΠΈΠ½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ΅).\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"title\": {\n", + " \"default\": null,\n", + " \"description\": \"НазваниС напоминания, ΠΎ Ρ‡Π΅ΠΌ Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ.\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"devices\": {\n", + " \"default\": null,\n", + " \"description\": \"Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ устройств, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ привязаны напоминания\",\n", + " \"items\": {\n", + " \"type\": \"string\"\n", + " },\n", + " \"type\": \"array\"\n", + " },\n", + " \"reminderTime\": {\n", + " \"default\": null,\n", + " \"description\": \"Π”Π°Ρ‚Π° ΠΈ врСмя старта напоминания.\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"createdAt\": {\n", + " \"default\": null,\n", + " \"description\": \"Π”Π°Ρ‚Π° ΠΈ врСмя создания напоминания.\",\n", + " \"type\": \"string\"\n", + " }\n", + " },\n", + " \"type\": \"object\"\n", + " },\n", + " \"type\": \"array\"\n", + " }\n", + " },\n", + " \"type\": \"object\"\n", + " },\n", + " \"few_shot_examples\": [\n", + " {\n", + " \"request\": \"ΠΌΠΎΠΈ напоминания\",\n", + " \"params\": {}\n", + " },\n", + " {\n", + " \"request\": \"ΡƒΠ΄Π°Π»ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΊΡƒ Π½Π° Π·Π°Π²Ρ‚Ρ€Π° Π² ΠΏΡΡ‚ΡŒ\",\n", + " \"params\": {}\n", + " },\n", + " {\n", + " \"request\": \"пСрСнСси Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π΄Ρ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ°ΠΌΡƒ Π½Π° ΡˆΠ΅ΡΡ‚ΡŒ Π²Π΅Ρ‡Π΅Ρ€Π°\",\n", + " \"params\": {}\n", + " },\n", + " {\n", + " \"request\": \"ΠΊΠ°ΠΊΠΎΠ΅ Ρƒ мСня количСство Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\",\n", + " \"params\": {}\n", + " },\n", + " {\n", + " \"request\": \"ΠΎΠ·Π²ΡƒΡ‡ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΊΠΈ\",\n", + " \"params\": {}\n", + " }\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "import json\n", + "\n", + "from langchain_gigachat.utils.function_calling import convert_to_gigachat_function\n", + "\n", + "print(\n", + " json.dumps(\n", + " convert_to_gigachat_function(GetReminderTool()), indent=2, ensure_ascii=False\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "8763a12b2bbd4a93a75aff182afb95dc", + "metadata": { + "collapsed": false + }, + "source": [ + "### ИзмСнСниС Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "7623eae2785240b9bd12b16a66d81610", + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "class ChangeReminderInput(BaseModel):\n", + " id: str = Field(description=\"id напоминания\")\n", + " title: Optional[str] = Field(description=\"Новый тСкст напоминания\")\n", + " date_time: Optional[str] = Field(\n", + " description=\"НовыС врСмя ΠΈ Π΄Π°Ρ‚Π° напоминания Π½Π° русском языкС. \"\n", + " \"ΠŸΠ΅Ρ€Π΅Π΄Π°ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сказал ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π΅ мСняя Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.\"\n", + " )\n", + " device_name: Optional[str] = Field(\n", + " description=\"НовоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ устройства, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\" # noqa\n", + " )\n", + "\n", + "\n", + "class ChangeReminderOutput(BaseModel):\n", + " status: Literal[\"success\", \"fail\"] = Field(\n", + " description=\"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ список установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\"\n", + " )\n", + " error: Optional[str] = Field(\n", + " description=\"ВСкст ошибки Π² случаС, Ссли status == fail\"\n", + " )\n", + " reminder: Optional[Reminder] = Field(description=\"ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ созданного напоминания\")\n", + "\n", + "\n", + "class ChangeReminderTool(BaseTool):\n", + " name: str = \"change_reminder\"\n", + " description: str = (\n", + " \"Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΠΎ id.\\n\"\n", + " \"Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, \"\n", + " \"Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти, \"\n", + " \"Ρ‚ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ попроси ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.\\n\"\n", + " \"Если просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅, \"\n", + " \"Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, \"\n", + " \"Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, \"\n", + " \"Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, \"\n", + " \"пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.\\n\"\n", + " \"Если просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, \"\n", + " \"указывая ΠΊΠ°ΠΊΠΎΠ΅, Π½ΠΎ Π½Π΅ указывая измСнСния, \"\n", + " \"Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, \"\n", + " \"Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, \"\n", + " \"пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, \"\n", + " \"ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу, ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти.\\n\"\n", + " \"Если просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, \"\n", + " \"указывая ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, \"\n", + " \"Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, \"\n", + " \"Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, \"\n", + " \"ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π·ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ измСнСния напоминаня ΠΏΠΎ id.\\n\\n\" # noqa\n", + " \"Π’Ρ‹Π·Ρ‹Π²Π°ΠΉ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ id ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅.\" # noqa\n", + " )\n", + " args_schema: Type[BaseModel] = ChangeReminderInput\n", + " return_schema: Type[BaseModel] = ChangeReminderOutput\n", + " few_shot_examples: FewShotExamples = [\n", + " {\n", + " \"request\": \"Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ с id 123 Π½Π° сСгодня Π² 19 30\",\n", + " \"params\": {\"id\": \"123\", \"date_time\": \"сСгодня Π² 19 30\"},\n", + " }\n", + " ]\n", + "\n", + " def _run(\n", + " self,\n", + " id: str, # noqa\n", + " title: Optional[str] = None,\n", + " date_time: Optional[str] = None,\n", + " device_name: Optional[str] = None,\n", + " run_manager: Optional[CallbackManagerForToolRun] = None,\n", + " ) -> ChangeReminderOutput:\n", + " \"\"\"Π›ΠΎΠ³ΠΈΠΊΠ° Ρ‚ΡƒΠ»Π°\"\"\"\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "7cdc8c89c7104fffa095e18ddfef8986", + "metadata": { + "collapsed": false + }, + "source": [ + "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ схСму, которая гСнСрируСтся для API GigaChat" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "b118ea5561624da68c537baed56e602f", + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"name\": \"change_reminder\",\n", + " \"description\": \"Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΠΎ id.\\nЕсли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти, Ρ‚ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ попроси ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅, Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, указывая ΠΊΠ°ΠΊΠΎΠ΅, Π½ΠΎ Π½Π΅ указывая измСнСния, Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу, ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, указывая ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π·ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ измСнСния напоминаня ΠΏΠΎ id.\\n\\nΠ’Ρ‹Π·Ρ‹Π²Π°ΠΉ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ id ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅.\",\n", + " \"parameters\": {\n", + " \"description\": \"Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΠΎ id.\\nЕсли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти, Ρ‚ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ попроси ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅, Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, указывая ΠΊΠ°ΠΊΠΎΠ΅, Π½ΠΎ Π½Π΅ указывая измСнСния, Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу, ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, указывая ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π·ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ измСнСния напоминаня ΠΏΠΎ id.\\n\\nΠ’Ρ‹Π·Ρ‹Π²Π°ΠΉ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ id ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅.\",\n", + " \"properties\": {\n", + " \"id\": {\n", + " \"description\": \"id напоминания\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"title\": {\n", + " \"description\": \"Новый тСкст напоминания\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"date_time\": {\n", + " \"description\": \"НовыС врСмя ΠΈ Π΄Π°Ρ‚Π° напоминания Π½Π° русском языкС. ΠŸΠ΅Ρ€Π΅Π΄Π°ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сказал ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π΅ мСняя Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"device_name\": {\n", + " \"description\": \"НовоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ устройства, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\",\n", + " \"type\": \"string\"\n", + " }\n", + " },\n", + " \"required\": [\n", + " \"id\"\n", + " ],\n", + " \"type\": \"object\"\n", + " },\n", + " \"return_parameters\": {\n", + " \"properties\": {\n", + " \"status\": {\n", + " \"description\": \"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ список установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\",\n", + " \"enum\": [\n", + " \"success\",\n", + " \"fail\"\n", + " ],\n", + " \"type\": \"string\"\n", + " },\n", + " \"error\": {\n", + " \"description\": \"ВСкст ошибки Π² случаС, Ссли status == fail\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"reminder\": {\n", + " \"description\": \"ΠœΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ напоминания.\",\n", + " \"properties\": {\n", + " \"id\": {\n", + " \"default\": null,\n", + " \"description\": \"Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ напоминания.\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"cron\": {\n", + " \"default\": null,\n", + " \"description\": \"ОписаниС пСриодичности напоминания. Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ΅ описаниС пСрСодичности напоминания. Если ΠΏΠΎΠ»Π΅ отсутствуСт, Ρ‚ΠΎ Ρƒ напоминания Π½Π΅Ρ‚ пСриодичности (Π΅Π΄ΠΈΠ½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ΅).\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"title\": {\n", + " \"default\": null,\n", + " \"description\": \"НазваниС напоминания, ΠΎ Ρ‡Π΅ΠΌ Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ.\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"devices\": {\n", + " \"default\": null,\n", + " \"description\": \"Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ устройств, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ привязаны напоминания\",\n", + " \"items\": {\n", + " \"type\": \"string\"\n", + " },\n", + " \"type\": \"array\"\n", + " },\n", + " \"reminderTime\": {\n", + " \"default\": null,\n", + " \"description\": \"Π”Π°Ρ‚Π° ΠΈ врСмя старта напоминания.\",\n", + " \"type\": \"string\"\n", + " },\n", + " \"createdAt\": {\n", + " \"default\": null,\n", + " \"description\": \"Π”Π°Ρ‚Π° ΠΈ врСмя создания напоминания.\",\n", + " \"type\": \"string\"\n", + " }\n", + " },\n", + " \"type\": \"object\"\n", + " }\n", + " },\n", + " \"required\": [\n", + " \"status\"\n", + " ],\n", + " \"type\": \"object\"\n", + " },\n", + " \"few_shot_examples\": [\n", + " {\n", + " \"request\": \"Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ с id 123 Π½Π° сСгодня Π² 19 30\",\n", + " \"params\": {\n", + " \"id\": \"123\",\n", + " \"date_time\": \"сСгодня Π² 19 30\"\n", + " }\n", + " }\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "print(\n", + " json.dumps(\n", + " convert_to_gigachat_function(ChangeReminderTool()), indent=2, ensure_ascii=False\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "938c804e27f84196a10c8828c723f798", + "metadata": { + "collapsed": false + }, + "source": [ + "### Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "504fb2a444614c0babb325280ed9130a", + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "class DeleteReminderInput(BaseModel):\n", + " ids: List[str] = Field(\n", + " description=\"Бписок ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² id Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ\"\n", + " )\n", + "\n", + "\n", + "class DeleteReminderOutput(BaseModel):\n", + " \"\"\"ΠžΡ‚Π²Π΅Ρ‚ Π½Π° delete_reminder\"\"\"\n", + "\n", + " status: Literal[\"success\", \"fail\"] = Field(\n", + " description=\"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅.\"\n", + " )\n", + " error: Optional[str] = Field(\n", + " description=\"ВСкст ошибки Π² случаС, Ссли status == fail\", default=None\n", + " )\n", + "\n", + "\n", + "class DeleteReminderTool(BaseTool):\n", + " name: str = \"delete_reminder\"\n", + " description: str = (\n", + " \"Π£Π΄Π°Π»ΠΈΡ‚ΡŒ напоминания ΠΏΠΎ id. \"\n", + " \"Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π» id напоминания, \"\n", + " \"Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, \"\n", + " \"Π²Ρ‹Π·Π²Π°Π² сначала ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, \"\n", + " \"ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ удалСния напоминания ΠΏΠΎ id.\\n\"\n", + " \"Если Π² контСкстС бСсСды с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρƒ тСбя Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ id, \"\n", + " \"Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ запуском этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅Π±Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ \"\n", + " \"Ρ‚ΠΎΡ‡Π½ΠΎ Π»ΠΈ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС согласия ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ. \"\n", + " \"Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС напоминания \"\n", + " \"ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ id ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ id напоминания,\"\n", + " \" ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π΄ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.\"\n", + " \" Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° \"\n", + " \"ΠΈ готовности ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, сначала пСрСспроси ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ\"\n", + " \" ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ напоминания ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ\"\n", + " \" Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ подтвСрТдСния ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\"\n", + " )\n", + " args_schema: Type[BaseModel] = DeleteReminderInput\n", + " return_schema: Type[BaseModel] = DeleteReminderOutput\n", + " few_shot_examples: FewShotExamples = []\n", + "\n", + " def _run(\n", + " self,\n", + " ids: List[str],\n", + " run_manager: Optional[CallbackManagerForToolRun] = None,\n", + " ) -> DeleteReminderOutput:\n", + " \"\"\"Π›ΠΎΠ³ΠΈΠΊΠ° Ρ‚ΡƒΠ»Π°\"\"\"\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "59bbdb311c014d738909a11f9e486628", + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"name\": \"delete_reminder\",\n", + " \"description\": \"Π£Π΄Π°Π»ΠΈΡ‚ΡŒ напоминания ΠΏΠΎ id. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π» id напоминания, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, Π²Ρ‹Π·Π²Π°Π² сначала ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ удалСния напоминания ΠΏΠΎ id.\\nЕсли Π² контСкстС бСсСды с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρƒ тСбя Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ id, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ запуском этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅Π±Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ‚ΠΎΡ‡Π½ΠΎ Π»ΠΈ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС согласия ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС напоминания ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ id ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ id напоминания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π΄ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΈ готовности ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, сначала пСрСспроси ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ напоминания ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ подтвСрТдСния ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\",\n", + " \"parameters\": {\n", + " \"description\": \"Π£Π΄Π°Π»ΠΈΡ‚ΡŒ напоминания ΠΏΠΎ id. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π» id напоминания, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, Π²Ρ‹Π·Π²Π°Π² сначала ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ удалСния напоминания ΠΏΠΎ id.\\nЕсли Π² контСкстС бСсСды с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρƒ тСбя Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ id, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ запуском этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅Π±Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ‚ΠΎΡ‡Π½ΠΎ Π»ΠΈ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС согласия ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС напоминания ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ id ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ id напоминания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π΄ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΈ готовности ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, сначала пСрСспроси ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ напоминания ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ подтвСрТдСния ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\",\n", + " \"properties\": {\n", + " \"ids\": {\n", + " \"description\": \"Бписок ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² id Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ\",\n", + " \"items\": {\n", + " \"type\": \"string\"\n", + " },\n", + " \"type\": \"array\"\n", + " }\n", + " },\n", + " \"required\": [\n", + " \"ids\"\n", + " ],\n", + " \"type\": \"object\"\n", + " },\n", + " \"return_parameters\": {\n", + " \"description\": \"ΠžΡ‚Π²Π΅Ρ‚ Π½Π° delete_reminder\",\n", + " \"properties\": {\n", + " \"status\": {\n", + " \"description\": \"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅.\",\n", + " \"enum\": [\n", + " \"success\",\n", + " \"fail\"\n", + " ],\n", + " \"type\": \"string\"\n", + " },\n", + " \"error\": {\n", + " \"default\": null,\n", + " \"description\": \"ВСкст ошибки Π² случаС, Ссли status == fail\",\n", + " \"type\": \"string\"\n", + " }\n", + " },\n", + " \"required\": [\n", + " \"status\"\n", + " ],\n", + " \"type\": \"object\"\n", + " },\n", + " \"few_shot_examples\": null\n", + "}\n" + ] + } + ], + "source": [ + "print(\n", + " json.dumps(\n", + " convert_to_gigachat_function(DeleteReminderTool()), indent=2, ensure_ascii=False\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "b2a9bfb4", + "metadata": {}, + "source": [ + "## Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅\n", + "\n", + "* [Π Π°Π±ΠΎΡ‚Π° с функциями](https://developers.sber.ru/docs/ru/gigachat/api/function-calling)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/cookbook/gigachat_phone_agent.ipynb b/cookbook/gigachat_phone_agent.ipynb new file mode 100644 index 0000000000000..34622562d5add --- /dev/null +++ b/cookbook/gigachat_phone_agent.ipynb @@ -0,0 +1,399 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# АгСнт Β«ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²Β»\n", + "\n", + "Π Π°Π·Π΄Π΅Π» содСрТит ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π³Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ модСль GigaChat, Ρ‡Ρ‚ΠΎΠ±Ρ‹:\n", + "\n", + "* Π Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ доступных модСлях Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² Π½Π° основС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….\n", + "* Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ характСристики Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°.\n", + "* ΠžΡ„ΠΎΡ€ΠΌΠ»ΡΡ‚ΡŒ Π·Π°ΠΊΠ°Π·Ρ‹ Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ².\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Установка зависимостСй\n", + "\n", + "Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° установитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ langchain-gigachat ΠΈ langgraph:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pip install langchain-gigachat langgraph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ инструмСнтов\n", + "\n", + "Π§Ρ‚ΠΎΠ±Ρ‹ Π°Π³Π΅Π½Ρ‚ ΠΌΠΎΠ³ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΎ доступных Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ…, создайтС массив с описаниСм ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "stuff_database = [\n", + " {\n", + " \"name\": \"iPhone 8 mini\",\n", + " \"price\": 300,\n", + " \"memory\": 128,\n", + " \"ram\": 8,\n", + " \"camera\": 12,\n", + " \"description\": \"Бамая дСшСвая модСль iPhone\",\n", + " },\n", + " {\n", + " \"name\": \"iPhone 14\",\n", + " \"price\": 1000,\n", + " \"memory\": 128,\n", + " \"ram\": 8,\n", + " \"camera\": 12,\n", + " \"description\": \"Π’Π΅Π»Π΅Ρ„ΠΎΠ½ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ, ΡƒΠΆΠ΅ сСгодня!\",\n", + " },\n", + " {\n", + " \"name\": \"Samsung Galaxy S23\",\n", + " \"price\": 900,\n", + " \"memory\": 256,\n", + " \"ram\": 12,\n", + " \"camera\": 108,\n", + " \"description\": \"ΠšΠ°ΠΌΠ΅Ρ€Π° такая острая, Ρ‡Ρ‚ΠΎ смоТСт ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ ваши ошибки\",\n", + " },\n", + " {\n", + " \"name\": \"Google Pixel 7\",\n", + " \"price\": 850,\n", + " \"memory\": 128,\n", + " \"ram\": 8,\n", + " \"camera\": 16,\n", + " \"description\": \"Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ стоковый Android ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Ρ„ΠΎΡ‚ΠΊΠΈ\",\n", + " },\n", + " {\n", + " \"name\": \"OnePlus 9T\",\n", + " \"price\": 700,\n", + " \"memory\": 128,\n", + " \"ram\": 8,\n", + " \"camera\": 48,\n", + " \"description\": \"Зарядка быстрСС, Ρ‡Π΅ΠΌ ваш ΠΊΠΎΡ„Π΅\",\n", + " },\n", + " {\n", + " \"name\": \"Xiaomi Mi 12\",\n", + " \"price\": 600,\n", + " \"memory\": 128,\n", + " \"ram\": 6,\n", + " \"camera\": 64,\n", + " \"description\": \"Π‘ΡŽΠ΄ΠΆΠ΅Ρ‚Π½Ρ‹ΠΉ Ρ„Π»Π°Π³ΠΌΠ°Π½ для Ρ†Π΅Π½ΠΈΡ‚Π΅Π»Π΅ΠΉ вкуса\",\n", + " },\n", + " {\n", + " \"name\": \"Sony Xperia 3\",\n", + " \"price\": 1100,\n", + " \"memory\": 256,\n", + " \"ram\": 12,\n", + " \"camera\": 20,\n", + " \"description\": \"Π’Π΅Π»Π΅Ρ„ΠΎΠ½ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ скучал ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ для ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹\",\n", + " },\n", + " {\n", + " \"name\": \"Huawei P60\",\n", + " \"price\": 800,\n", + " \"memory\": 128,\n", + " \"ram\": 8,\n", + " \"camera\": 50,\n", + " \"description\": \"Для Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ Π½ΠΎΡ‡Π½ΠΎΠΉ съСмки ΠΈ Π±Π΅Π· Google Play\",\n", + " },\n", + " {\n", + " \"name\": \"Nokia 10 PureView\",\n", + " \"price\": 750,\n", + " \"memory\": 128,\n", + " \"ram\": 6,\n", + " \"camera\": 48,\n", + " \"description\": \"Nokia Π²Π΅Ρ€Π½ΡƒΠ»Π°ΡΡŒ, ΠΈ Ρƒ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ Π·ΠΌΠ΅ΠΉΠΊΠ°!\",\n", + " },\n", + " {\n", + " \"name\": \"LG Velvet 2\",\n", + " \"price\": 650,\n", + " \"memory\": 128,\n", + " \"ram\": 8,\n", + " \"camera\": 32,\n", + " \"description\": \"ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Тизнь Ρ…ΠΎΡ€ΠΎΡˆΠ°\",\n", + " },\n", + " {\n", + " \"name\": \"Asus ROG Phone 6\",\n", + " \"price\": 1000,\n", + " \"memory\": 512,\n", + " \"ram\": 16,\n", + " \"camera\": 64,\n", + " \"description\": \"Π˜Π³Ρ€Π°ΠΉ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ„ΠΈ, заряТай ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ\",\n", + " },\n", + " {\n", + " \"name\": \"Motorola Edge Plus\",\n", + " \"price\": 700,\n", + " \"memory\": 128,\n", + " \"ram\": 8,\n", + " \"camera\": 108,\n", + " \"description\": \"ΠšΡ€Π°ΠΉ ΠΊ ΠΊΡ€Π°ΡŽ, пиксСль ΠΊ пиксСлю\",\n", + " },\n", + " {\n", + " \"name\": \"Realme X4 Pro\",\n", + " \"price\": 450,\n", + " \"memory\": 128,\n", + " \"ram\": 8,\n", + " \"camera\": 48,\n", + " \"description\": \"Экономия Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ Π² качСствС\",\n", + " },\n", + " {\n", + " \"name\": \"Oppo Find X4\",\n", + " \"price\": 900,\n", + " \"memory\": 256,\n", + " \"ram\": 12,\n", + " \"camera\": 50,\n", + " \"description\": \"Найди X, Π½ΠΎ Π±Π΅Π· ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ\",\n", + " },\n", + " {\n", + " \"name\": \"BlackBerry Secure\",\n", + " \"price\": 1200,\n", + " \"memory\": 128,\n", + " \"ram\": 8,\n", + " \"camera\": 12,\n", + " \"description\": \"Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π΅Ρ‰Ρ‘ ΠΏΠΎΠΌΠ½ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ физичСская ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°\",\n", + " },\n", + " {\n", + " \"name\": \"Fairphone 4\",\n", + " \"price\": 500,\n", + " \"memory\": 64,\n", + " \"ram\": 4,\n", + " \"camera\": 12,\n", + " \"description\": \"Π­Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для Π·Π°Π±ΠΎΡ‚Π»ΠΈΠ²ΠΎΠ³ΠΎ потрСбитСля\",\n", + " },\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π³Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….\n", + "\n", + "Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ созданиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· python-ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ `@tool`.\n", + "Он ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² инструмСнт, доступный ΠΌΠΎΠ΄Π΅Π»ΠΈ для Π²Ρ‹Π·ΠΎΠ²Π°.\n", + "\n", + "> МодСль ориСнтируСтся ΠΊΠ°ΠΊ Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ Π½Π° описаниС ΠΈ Ρ‚ΠΈΠΏΡ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния.\n", + "> Π§Ρ‚ΠΎΠ±Ρ‹ модСль ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»Π° ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт, всС значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Dict\n", + "\n", + "from langchain.tools import tool\n", + "\n", + "\n", + "@tool\n", + "def get_all_phone_names() -> str:\n", + " \"\"\"Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ названия ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ всСх Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ\"\"\"\n", + " # ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ\n", + " print(\"\\033[92m\" + \"Bot requested get_all_phone_names()\" + \"\\033[0m\")\n", + " return \", \".join([stuff[\"name\"] for stuff in stuff_database])\n", + "\n", + "\n", + "@tool\n", + "def get_phone_data_by_name(name: str) -> Dict:\n", + " \"\"\"\n", + " Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π½Ρƒ Π² Π΄ΠΎΠ»Π»Π°Ρ€Π°Ρ…, характСристики ΠΈ описаниС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° ΠΏΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ названию ΠΌΠΎΠ΄Π΅Π»ΠΈ.\n", + "\n", + " Args:\n", + " name (str): Π’ΠΎΡ‡Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°.\n", + "\n", + " Returns:\n", + " Dict: Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ (Ρ†Π΅Π½Π°, характСристики ΠΈ описаниС).\n", + " \"\"\"\n", + " # ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ\n", + " print(\"\\033[92m\" + f\"Bot requested get_phone_data_by_name({name})\" + \"\\033[0m\")\n", + " for stuff in stuff_database:\n", + " if stuff[\"name\"] == name.strip():\n", + " return stuff\n", + "\n", + " return {\"error\": \"Π’Π΅Π»Π΅Ρ„ΠΎΠ½ с Ρ‚Π°ΠΊΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½\"}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π°Π³Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°ΠΊΠ°Π·Ρ‹:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "@tool\n", + "def create_order(name: str, phone: str) -> None:\n", + " \"\"\"\n", + " Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Π·Π°ΠΊΠ°Π· Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½.\n", + "\n", + " Args:\n", + " name (str): НазваниС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°.\n", + " phone (str): Π’Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\n", + "\n", + " Returns:\n", + " str: Бтатус Π·Π°ΠΊΠ°Π·Π°.\n", + " \"\"\"\n", + " # ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ\n", + " print(\"\\033[92m\" + f\"Bot requested create_order({name}, {phone})\" + \"\\033[0m\")\n", + " print(f\"!!! NEW ORDER !!! {name} {phone}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмного ΠΏΡ€ΠΎΠΌΠΏΡ‚Π° ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ€ΠΎΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ модСль:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "system_prompt = \"Π’Ρ‹ Π±ΠΎΡ‚-ΠΏΡ€ΠΎΠ΄Π°Π²Π΅Ρ† Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ². Ввоя Π·Π°Π΄Π°Ρ‡Π° ΠΏΡ€ΠΎΠ΄Π°Ρ‚ΡŒ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² ΠΎΡ‚ Π½Π΅Π³ΠΎ Π·Π°ΠΊΠ°Π·. Если Ρ‚Π΅Π±Π΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΠΉ ΠΈΡ… Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Π§Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»ΠΈ доступ ΠΊΠΎ всСм инструмСнтам, пСрСчислитС ΠΈΡ… Π² массивС:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "tools = [get_all_phone_names, get_phone_data_by_name, create_order]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π³Π΅Π½Ρ‚Π°\n", + "\n", + "ΠŸΠ΅Ρ€Π΅Π΄ созданиСм Π°Π³Π΅Π½Ρ‚Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ GigaChat ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ модСль, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с функциями:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_gigachat.chat_models import GigaChat\n", + "\n", + "model = GigaChat(\n", + " credentials=\"ΠΊΠ»ΡŽΡ‡_Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ\",\n", + " scope=\"GIGACHAT_API_PERS\",\n", + " model=\"GigaChat-Pro\",\n", + " verify_ssl_certs=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> Бписок ΠΈ описаниС доступных ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈΡ‰ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ [МодСли GigaChat](https://developers.sber.ru/docs/ru/gigachat/models#modeli-dlya-generatsii).\n", + "> ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с функциями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat API β€” Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ [Π Π°Π±ΠΎΡ‚Π° с функциями](https://developers.sber.ru/docs/ru/gigachat/api/function-calling).\n", + "\n", + "Для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ запросов ΠΊ GigaChat ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΊΠ»ΡŽΡ‡ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ](https://developers.sber.ru/docs/ru/gigachat/quickstart/ind-using-api#poluchenie-avtorizatsionnyh-dannyh), ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² интСрфСйсС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GigaChat API.\n", + "\n", + "Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π°Π³Π΅Π½Ρ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π΅ΠΌΡƒ экзСмпляр класса GigaChat, ΠΈ массив доступных инструмСнтов `tools`:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.prebuilt import create_react_agent\n", + "from langgraph.checkpoint.memory import MemorySaver\n", + "\n", + "agent = create_react_agent(model,\n", + " tools=tools,\n", + " checkpointer=MemorySaver(),\n", + " state_modifier=system_prompt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° с Π°Π³Π΅Π½Ρ‚ΠΎΠΌ" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import time\n", + "\n", + "def chat(thread_id: str):\n", + " config = {\"configurable\": {\"thread_id\": thread_id}}\n", + " while(True):\n", + " rq = input(\"\\nHuman: \")\n", + " print(\"User: \", rq)\n", + " if rq == \"\":\n", + " break\n", + " resp = agent.invoke({\"messages\": [(\"user\", rq)]}, config=config)\n", + " print(\"Assistant: \", resp[\"messages\"][-1].content)\n", + " time.sleep(1) # For notebook capability\n", + "\n", + "chat(\"123\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/cookbook/gigachat_qa.ipynb b/cookbook/gigachat_qa.ipynb new file mode 100644 index 0000000000000..c0c6b5270c4c0 --- /dev/null +++ b/cookbook/gigachat_qa.ipynb @@ -0,0 +1,642 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "3ea857b1", + "metadata": {}, + "source": [ + "# Retrieval Augmented Generation(RAG) с использованиСм GigaChat Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ \"Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ с ΠΊΠ½ΠΈΠ³ΠΎΠΉ\"\n", + "\n", + "ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ RAG позволяСт большим языковым модСлям (LLM) ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠΌΠΏΡ‚.\n", + "НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ модСль ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ тСкст ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ \"ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΈ ΠœΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π°\".\n", + "\n", + "ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ RAG Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² [Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ LangChain](https://python.langchain.com/docs/use_cases/question_answering/) ΠΈ Π² курсС ΠΏΠΎ ΠΏΡ€ΠΎΠΌΠΏΡ‚-ΠΈΠ½ΠΆΠ΅Π½ΠΈΡ€ΠΈΠ½Π³Ρƒ ΠΎΡ‚ Π‘Π±Π΅Ρ€Π° (ссылка Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ·ΠΆΠ΅).\n", + "\n", + "Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ рассмотрим тСкст Ρ€ΠΎΠΌΠ°Π½Π° Π‘ΡƒΠ»Π³Π°ΠΊΠΎΠ²Π° \"ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΈ ΠœΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π°\" (Π³Π»Π°Π²Ρ‹ 1 ΠΈ 2).\n", + "\n", + "Вопрос Π±ΡƒΠ΄Π΅Ρ‚ - `Какой ΠΏΠ»Π°Ρ‰ Π±Ρ‹Π» Ρƒ ΠŸΠΎΠ½Ρ‚ΠΈΡ ΠŸΠΈΠ»Π°Ρ‚Π°?`. ΠžΡ‚Π²Π΅Ρ‚ содСрТится Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΊΠ½ΠΈΠ³ΠΈ:\n", + "`Π’ Π±Π΅Π»ΠΎΠΌ ΠΏΠ»Π°Ρ‰Π΅ с ΠΊΡ€ΠΎΠ²Π°Π²Ρ‹ΠΌ ΠΏΠΎΠ΄Π±ΠΎΠ΅ΠΌ, ΡˆΠ°Ρ€ΠΊΠ°ΡŽΡ‰Π΅ΠΉ кавалСрийской ΠΏΠΎΡ…ΠΎΠ΄ΠΊΠΎΠΉ, Ρ€Π°Π½Π½ΠΈΠΌ ΡƒΡ‚Ρ€ΠΎΠΌ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π½Π°Π΄Ρ†Π°Ρ‚ΠΎΠ³ΠΎ числа вСсСннСго мСсяца нисана Π² ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½Π½Π°Π΄Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΊΡ€Ρ‹Π»ΡŒΡΠΌΠΈ Π΄Π²ΠΎΡ€Ρ†Π° ΠΈΡ€ΠΎΠ΄Π° Π²Π΅Π»ΠΈΠΊΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅Π» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π˜ΡƒΠ΄Π΅ΠΈ ΠŸΠΎΠ½Ρ‚ΠΈΠΉ ΠŸΠΈΠ»Π°Ρ‚.`" + ] + }, + { + "cell_type": "markdown", + "id": "9ea31150", + "metadata": {}, + "source": [ + "## Установка\n", + "\n", + "Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°ΠΌ понадобится вСкторая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Chroma." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a7dc1ec5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mWARNING: There was an error checking the latest version of pip.\u001b[0m\u001b[33m\n", + "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install langchain-chroma --quiet" + ] + }, + { + "cell_type": "markdown", + "id": "5e7543fa", + "metadata": {}, + "source": [ + "## Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ\n", + "Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ модСль GigaChat." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "921afeaa", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_gigachat.chat_models import GigaChat\n", + "\n", + "llm = GigaChat(credentials=\"ΠΊΠ»ΡŽΡ‡_Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ\", verify_ssl_certs=False)" + ] + }, + { + "cell_type": "markdown", + "id": "84443c6f", + "metadata": {}, + "source": [ + "Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ спросим Ρƒ ΠΌΠΎΠ΄Π΅Π»ΠΈ вопрос ΠΏΡ€ΠΎ Ρ†Π²Π΅Ρ‚ ΠΏΠ»Π°Ρ‰Π° Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ контСкста. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½Π° ΠΈ Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚..." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "af0398d5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ΠŸΠΎΠ½Ρ‚ΠΈΠΉ ΠŸΠΈΠ»Π°Ρ‚, римский ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π˜ΡƒΠ΄Π΅ΠΈ, носил ΠΏΠ»Π°Ρ‰, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ назывался \"Ρ‚ΠΎΠ³Π°\". Π’ΠΎΠ³Π° Π±Ρ‹Π»Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΎΠ΄Π΅ΠΆΠ΄ΠΎΠΉ римлян ΠΈ прСдставляла собой Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΡ‚Π½ΠΎ Ρ‚ΠΊΠ°Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ Π²ΠΎΠΊΡ€'" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from langchain.schema import HumanMessage\n", + "\n", + "question = \"Какой ΠΏΠ»Π°Ρ‰ Π±Ρ‹Π» Ρƒ ΠŸΠΎΠ½Ρ‚ΠΈΡ ΠŸΠΈΠ»Π°Ρ‚Π°?\"\n", + "llm([HumanMessage(content=question)]).content[0:200]" + ] + }, + { + "cell_type": "markdown", + "id": "4b2e4e31", + "metadata": {}, + "source": [ + "Π’ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ модСль Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½Π°ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, поэтому ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ RAG-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.\n", + "\n", + "## ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°\n", + "\n", + "Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° части. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ `TextLoader` для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ `RecursiveCharacterTextSplitter`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ тСкст Π½Π° ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π²Π½Ρ‹Π΅ куски Π² ~1000 символов с ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ Π² ~200 символов. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ сплиттСра сам Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠΌ способом слСдуСт ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (ΠΏΠΎ Π°Π±Π·Π°Ρ†Π°ΠΌ, ΠΏΠΎ прСдлоТСниям ΠΈ Ρ‚.Π΄.)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f8cf5765", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total documents: 91\n" + ] + } + ], + "source": [ + "from langchain.document_loaders import TextLoader\n", + "from langchain.text_splitter import (\n", + " RecursiveCharacterTextSplitter,\n", + ")\n", + "\n", + "loader = TextLoader(\"/sample_data/мастСр_ΠΈ_ΠΌΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π°.txt\")\n", + "documents = loader.load()\n", + "text_splitter = RecursiveCharacterTextSplitter(\n", + " chunk_size=1000,\n", + " chunk_overlap=200,\n", + ")\n", + "documents = text_splitter.split_documents(documents)\n", + "print(f\"Total documents: {len(documents)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "131d5059", + "metadata": {}, + "source": [ + "ПослС Π½Π°Ρ€Π΅Π·ΠΊΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ 91 Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ частями ΠΊΠ½ΠΈΠ³ΠΈ.\n", + "\n", + "## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… эмбСддингов\n", + "\n", + "Π­ΠΌΠ±Π΅Π΄Π΄ΠΈΠ½Π³ это Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ прСдставлСниС тСкста, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано для опрСдСлСния смысловой близости тСкстов. ВСкторная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΡ‚ тСксты ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ эмбСддинги, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск ΠΏΠΎ Π½ΠΈΠΌ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ GigaChatEmbeddings ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Chroma.\n", + "\n", + "> ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ сСрвис для вычислСния эмбСддингов ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ стоимости ΠΌΠΎΠ΄Π΅Π»ΠΈ GigaChat." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "fdce8923", + "metadata": {}, + "outputs": [], + "source": [ + "from chromadb.config import Settings\n", + "from langchain_gigachat.embeddings.gigachat import GigaChatEmbeddings\n", + "from langchain_chroma import Chroma\n", + "\n", + "embeddings = GigaChatEmbeddings(\n", + " credentials=\"ΠΊΠ»ΡŽΡ‡_Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ\", verify_ssl_certs=False\n", + ")\n", + "\n", + "db = Chroma.from_documents(\n", + " documents,\n", + " embeddings,\n", + " client_settings=Settings(anonymized_telemetry=False),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "29137915", + "metadata": {}, + "source": [ + "## Поиск ΠΏΠΎ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…\n", + "\n", + "Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с наибольшСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ содСрТат ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° наш вопрос.\n", + "\n", + "По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 4 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² зависимости ΠΎΡ‚ Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².\n", + "\n", + "Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΆΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ содСрТит Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³ΠΈ с ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ Π½Π° наш вопрос." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b0c55e98", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "docs = db.similarity_search(question, k=4)\n", + "len(docs)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "32b43339", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "... Π°ΠΊΡ†Π΅Π½Ρ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠΏΠ°Π»: – ВсС просто: Π² Π±Π΅Π»ΠΎΠΌ ΠΏΠ»Π°Ρ‰Π΅...\\n\\n\\n\\nΠ“Π»Π°Π²Π° 2\\n\\nΠŸΠΎΠ½Ρ‚ΠΈΠΉ ΠŸΠΈΠ»Π°Ρ‚\\n\\nΠ’ Π±Π΅Π»ΠΎΠΌ ΠΏΠ»Π°Ρ‰Π΅ с ΠΊΡ€ΠΎΠ²Π°Π²Ρ‹ΠΌ ΠΏΠΎΠ΄Π±ΠΎΠ΅ΠΌ, ΡˆΠ°Ρ€ΠΊΠ°ΡŽΡ‰Π΅ΠΉ кавалСрийской ΠΏΠΎΡ…ΠΎΠ΄ΠΊΠΎΠΉ, Ρ€Π°Π½Π½ΠΈΠΌ ΡƒΡ‚Ρ€ΠΎΠΌ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π½Π°Π΄Ρ† ...\n" + ] + } + ], + "source": [ + "print(f\"... {str(docs[0])[620:800]} ...\")" + ] + }, + { + "cell_type": "markdown", + "id": "96a063c7", + "metadata": {}, + "source": [ + "## QnA Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°\n", + "\n", + "Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ создадим Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ QnA, которая ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° вопросы ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ. Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ пСрСдаСтся языковая модСль ΠΈ Ρ€Π΅Ρ‚Ρ€ΠΈΠ²Π΅Ρ€ (Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…)." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "24671e9a", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chains import RetrievalQA\n", + "\n", + "qa_chain = RetrievalQA.from_chain_type(llm, retriever=db.as_retriever())" + ] + }, + { + "cell_type": "markdown", + "id": "592151a2", + "metadata": {}, + "source": [ + "НаконСц ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ вопрос нашСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚!" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "f3b2f453", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/19563044/Documents/Giga/gigachain/venv/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `__call__` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use invoke instead.\n", + " warn_deprecated(\n" + ] + }, + { + "data": { + "text/plain": [ + "{'query': 'Какой ΠΏΠ»Π°Ρ‰ Π±Ρ‹Π» Ρƒ ΠŸΠΎΠ½Ρ‚ΠΈΡ ΠŸΠΈΠ»Π°Ρ‚Π°?',\n", + " 'result': 'Π£ ΠŸΠΎΠ½Ρ‚ΠΈΡ ΠŸΠΈΠ»Π°Ρ‚Π° Π±Ρ‹Π» Π±Π΅Π»Ρ‹ΠΉ ΠΏΠ»Π°Ρ‰ с ΠΊΡ€ΠΎΠ²Π°Π²Ρ‹ΠΌ ΠΏΠΎΠ΄Π±ΠΎΠ΅ΠΌ.'}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qa_chain({\"query\": question})" + ] + }, + { + "cell_type": "markdown", + "id": "ffa10ec4", + "metadata": {}, + "source": [ + "НСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вопросов для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "8f619e09", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'query': 'Какая Ρ‚Ρ€ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Ρƒ Π’ΠΎΠ»Π°Π½Π΄Π°?',\n", + " 'result': 'Π£ Π’ΠΎΠ»Π°Π½Π΄Π° Π±Ρ‹Π»Π° Ρ‚Ρ€ΠΎΡΡ‚ΡŒ с Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ набалдашником Π² Π²ΠΈΠ΄Π΅ Π³ΠΎΠ»ΠΎΠ²Ρ‹ пудСля.'}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qa_chain({\"query\": \"Какая Ρ‚Ρ€ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Ρƒ Π’ΠΎΠ»Π°Π½Π΄Π°?\"})" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "a4a54b82", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'query': 'Ρ‡Ρ‚ΠΎ Π½Π΅ смогли ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π³Π΅Ρ€ΠΎΠΈ Ρ€ΠΎΠΌΠ°Π½Π° Π½Π° ΠŸΠ°Ρ‚Ρ€ΠΈΠ°Ρ€ΡˆΠΈΡ…?',\n", + " 'result': 'Π“Π΅Ρ€ΠΎΠΈ Ρ€ΠΎΠΌΠ°Π½Π° \"ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΈ ΠœΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π°\" Π½Π΅ смогли ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Ρ€Π·Π°Π½ Π² Π±ΡƒΠ΄ΠΎΡ‡ΠΊΠ΅ Π½Π° ΠŸΠ°Ρ‚Ρ€ΠΈΠ°Ρ€ΡˆΠΈΡ….'}" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "qa_chain({\"query\": \"Ρ‡Ρ‚ΠΎ Π½Π΅ смогли ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π³Π΅Ρ€ΠΎΠΈ Ρ€ΠΎΠΌΠ°Π½Π° Π½Π° ΠŸΠ°Ρ‚Ρ€ΠΈΠ°Ρ€ΡˆΠΈΡ…?\"})" + ] + }, + { + "cell_type": "markdown", + "id": "e4cf02ad", + "metadata": {}, + "source": [ + "# Бонус - Ρ€Π°Π±ΠΎΡ‚Π° с Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€ΠΎΠΉ\n", + "Рассмотрим Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€ΠΎΠΉ. Π’ качСствС ΠΎΠ±Ρ€Π°Π·Ρ†Π° возьмСм ΠΊΠ½ΠΈΠ³Ρƒ \"ДискрСтная ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°\" Π’. Π•. АлСксССва.\n", + "\n", + "Из ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° RAG ΠΊ Π½Π°ΡƒΡ‡Π½Ρ‹ΠΌ ΠΊΠ½ΠΈΠ³Π°ΠΌ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ ΠΈ позволяСт ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы, учитывая знания, написанныС Π² ΠΊΠ½ΠΈΠ³Π΅." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "438e1017", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.2\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" + ] + } + ], + "source": [ + "!pip install pypdf langchain-chroma --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d8581014", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "139\n" + ] + } + ], + "source": [ + "from langchain_community.document_loaders import PyPDFLoader\n", + "\n", + "# Если ссылка Π½Π° ΠΊΠ½ΠΈΠ³Ρƒ пСрСстанСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.\n", + "# Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого Π΄Π΅ΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ссылка Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ сайта ННГУ (http://www.unn.ru/)\n", + "loader = PyPDFLoader(\"http://www.unn.ru/books/met_files/Alekseev.pdf\")\n", + "\n", + "docs = loader.load()\n", + "print(len(docs))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "269b2921", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " \n", + " \n", + "ΠœΠ˜ΠΠ˜Π‘Π’Π•Π Π‘Π’Π’Πž ΠžΠ‘Π ΠΠ—ΠžΠ’ΠΠΠ˜Π― И НАУКИ \n", + "Π ΠžΠ‘Π‘Π˜Π™Π‘ΠšΠžΠ™ Π€Π•Π”Π•Π ΠΠ¦Π˜Π˜ \n", + " \n", + "НиТСгородский государствСнный ΡƒΠ½ΠΈΠ²Π΅Ρ€\n", + "{'source': 'http://www.unn.ru/books/met_files/Alekseev.pdf', 'page': 0}\n" + ] + } + ], + "source": [ + "print(docs[0].page_content[0:100])\n", + "print(docs[0].metadata)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5a912c35", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_gigachat.chat_models import GigaChat\n", + "from langchain.schema import HumanMessage\n", + "\n", + "giga = GigaChat(\n", + " credentials=\"ΠΊΠ»ΡŽΡ‡_Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ\",\n", + " model=\"GigaChat-Pro\",\n", + " verify_ssl_certs=False,\n", + " timeout=1200,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7b901e8e", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_chroma import Chroma\n", + "from langchain_gigachat.embeddings.gigachat import GigaChatEmbeddings\n", + "from langchain_text_splitters import RecursiveCharacterTextSplitter\n", + "\n", + "embeddings = GigaChatEmbeddings(\n", + " credentials=\"ΠΊΠ»ΡŽΡ‡_Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ\", verify_ssl_certs=False\n", + ")\n", + "\n", + "\n", + "text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)\n", + "splits = text_splitter.split_documents(docs)\n", + "vectorstore = Chroma.from_documents(documents=splits, embedding=embeddings)\n", + "\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1b91b729", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chains import create_retrieval_chain\n", + "from langchain.chains.combine_documents import create_stuff_documents_chain\n", + "from langchain_core.prompts import ChatPromptTemplate\n", + "\n", + "system_prompt = (\n", + " \"Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° вопрос ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с использованиСм Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ.\\n\"\n", + " \"ΠžΡ‚Π²Π΅Ρ‡Π°Π°ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 2-3 ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.\\n\"\n", + " \"Π’ΠΎΡ‚ части ΠΊΠ½ΠΈΠ³ΠΈ контСкст для ΠΎΡ‚Π²Π΅Ρ‚Π°:\"\n", + " \"\\n\\n\"\n", + " \"{context}\"\n", + ")\n", + "\n", + "prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\"system\", system_prompt),\n", + " (\"human\", \"{input}\"),\n", + " ]\n", + ")\n", + "\n", + "\n", + "question_answer_chain = create_stuff_documents_chain(giga, prompt)\n", + "rag_chain = create_retrieval_chain(retriever, question_answer_chain)" + ] + }, + { + "attachments": { + "image.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "b7c94605", + "metadata": {}, + "source": [ + "## ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ\n", + "Для сравнСния ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π΄Π²Π°Ρ‚ΡŒ вопрос сначала ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (pure), Π·Π°Ρ‚Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· rag-Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ\n", + "\n", + "![image.png](attachment:image.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "aae231c4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/19563044/Documents/Giga/gigachain/.venv/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:139: LangChainDeprecationWarning: The method `BaseChatModel.__call__` was deprecated in langchain-core 0.1.7 and will be removed in 0.3.0. Use invoke instead.\n", + " warn_deprecated(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pure: Π’Π΅ΠΎΡ€Π΅ΠΌΠ° ΠΎΠ± эйлСровом Ρ†ΠΈΠΊΠ»Π΅ гласит, Ρ‡Ρ‚ΠΎ Π² любом Π³Ρ€Π°Ρ„Π΅ Π±Π΅Π· мостов ΠΈ висячих Ρ€Π΅Π±Π΅Ρ€ сумма стСпСнСй всСх Π²Π΅Ρ€ΡˆΠΈΠ½ Ρ€Π°Π²Π½Π° ΡƒΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡƒ числу Ρ€Ρ‘Π±Π΅Ρ€.\n", + "RAG: Π’Π΅ΠΎΡ€Π΅ΠΌΠ° ΠΎΠ± эйлСровом Ρ†ΠΈΠΊΠ»Π΅ гласит, Ρ‡Ρ‚ΠΎ Π² связном Π³Ρ€Π°Ρ„Π΅ эйлСров Ρ†ΠΈΠΊΠ» сущСствуСт Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° стСпСни всСх Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π° Ρ‡Π΅Ρ‚Π½Ρ‹.\n" + ] + } + ], + "source": [ + "\"\"\" ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»: Π’Π΅ΠΎΡ€Π΅ΠΌΠ° 5.7 (ΠΎΠ± эйлСровом Ρ†ΠΈΠΊΠ»Π΅). Π­ΠΉΠ»Π΅Ρ€ΠΎΠ² Ρ†ΠΈΠΊΠ» Π² связном Π³Ρ€Π°Ρ„Π΅\n", + "сущСствуСт Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° стСпСни всСх Π²Π΅Ρ€ΡˆΠΈΠ½ этого Π³Ρ€Π°Ρ„Π°\n", + "Ρ‡Π΅Ρ‚Π½Ρ‹. \"\"\"\n", + "q = \"О Ρ‡Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ° ΠΎΠ± эйлСровом Ρ†ΠΈΠΊΠ»Π΅?\"\n", + "pure = giga([HumanMessage(content=q)]).content\n", + "print(f\"Pure: {pure}\")\n", + "\n", + "rag = rag_chain.invoke({\"input\": q})[\"answer\"]\n", + "print(f\"RAG: {rag}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "8a69ef6e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pure: Π“Ρ€Π°Ρ„ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΡƒΠ΄ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ, Ссли ΠΎΠ½ содСрТит Ρ†ΠΈΠΊΠ» Π½Π΅Ρ‡Ρ‘Ρ‚Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½Ρƒ ΠΏΠ°Ρ€Ρƒ нСсмСТных Ρ€Ρ‘Π±Π΅Ρ€.\n", + "\n", + "RAG: Π“Ρ€Π°Ρ„ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΡƒΠ΄ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ, Ссли Π² Π½Π΅ΠΌ содСрТатся Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹.\n" + ] + } + ], + "source": [ + "\"\"\" ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»: ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, присутствиС Π² Π³Ρ€Π°Ρ„Π΅ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² (Ρ‚.Π΅. Ρ†ΠΈΠΊΠ»ΠΎΠ²\n", + "Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹) – СдинствСнная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π³Ρ€Π°Ρ„ Π½Π΅ являСтся\n", + "Π΄Π²ΡƒΠ΄ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ. \"\"\"\n", + "q = \"ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚: По ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π³Ρ€Π°Ρ„ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΡƒΠ΄ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ? \"\n", + "pure = giga([HumanMessage(content=q)]).content\n", + "print(f\"Pure: {pure}\\n\")\n", + "\n", + "rag = rag_chain.invoke({\"input\": q})[\"answer\"]\n", + "print(f\"RAG: {rag}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "33658e37", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pure: Π‘Π»ΠΎΠ²ΠΎ β€” это лСксичСская Π΅Π΄ΠΈΠ½ΠΈΡ†Π° языка, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Набор β€” это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ², явлСний, понятий, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ.\n", + "\n", + "ΠŸΡ€ΠΈΠΌΠ΅Ρ€:\n", + "\n", + "Π‘Π»ΠΎΠ²ΠΎ «стол» β€” это лСксичСская Π΅Π΄ΠΈΠ½ΠΈΡ†Π° русского языка, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π°Ρ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ΠΌΠ΅Π±Π΅Π»ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠ° ΠΏΠΈΡ‰ΠΈ.\n", + "\n", + "Набор столовых ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠ² β€” это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² (Π»ΠΎΠΆΠ΅ΠΊ, Π²ΠΈΠ»ΠΎΠΊ, Π½ΠΎΠΆΠ΅ΠΉ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΎ врСмя Π΅Π΄Ρ‹.\n", + "\n", + "RAG: Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ словом ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ слово - это упорядочСнная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠΊΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ каТдая Π±ΡƒΠΊΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ - это просто ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° ΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ порядка.\n", + "\n", + "ΠŸΡ€ΠΈΠΌΠ΅Ρ€: \"ΠΌΠ°ΠΌΠ°\" - это слово, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ состоит ΠΈΠ· Π±ΡƒΠΊΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ (\"ΠΌ\" ΠΈ \"Π°\"), ΠΈ порядок Π±ΡƒΠΊΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. \"ΠΌΠ°\", \"Π°ΠΌ\", \"Π°ΠΌΠ°\" - это Π΄Ρ€ΡƒΠ³ΠΈΠ΅ слова, Π½ΠΎ \"ΠΌΠ°ΠΌΠ°\" - СдинствСнноС слово ΠΈΠ· этих Ρ‚Ρ€Π΅Ρ….\n", + "\n", + "Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π½Π°Π±ΠΎΡ€ \"ΠΌΠ°ΠΌΠ°\" Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ запись, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ повторСния элСмСнтов ΠΈΠ»ΠΈ ΠΈΡ… порядок.\n" + ] + } + ], + "source": [ + "\"\"\" ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»: Π’Π΅Ρ€ΠΌΠΈΠ½ Π½Π°Π±ΠΎΡ€ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов.\n", + "ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Π° отличаСтся ΠΎΡ‚ понятия мноТСства Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ\n", + "* Π² Π½Π°Π±ΠΎΡ€Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ элСмСнты,\n", + "* порядок располоТСния элСмСнтов Π² Π½Π°Π±ΠΎΡ€Π΅ Π²Π°ΠΆΠ΅Π½ (Π½Π°Π±ΠΎΡ€Ρ‹, состоящиС\n", + "ΠΈΠ· ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… элСмСнтов, располоТСнных Π² Ρ€Π°Π·Π½ΠΎΠΌ порядкС,\n", + "ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ). \"\"\"\n", + "q = \"Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ словом ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠΌ. ΠŸΡ€ΠΈΠ²Π΅Π΄ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.\"\n", + "pure = giga([HumanMessage(content=q)]).content\n", + "print(f\"Pure: {pure}\\n\")\n", + "\n", + "rag = rag_chain.invoke({\"input\": q})[\"answer\"]\n", + "print(f\"RAG: {rag}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/cookbook/js/README.md b/cookbook/js/README.md new file mode 100644 index 0000000000000..7ef8bfff6de78 --- /dev/null +++ b/cookbook/js/README.md @@ -0,0 +1,10 @@ +# Π‘Π±ΠΎΡ€Π½ΠΈΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² + +Π’ этой ΠΏΠ°ΠΏΠΊΠ΅ собраны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования JavaScript вСрсии партнСрского ΠΏΠ°ΠΊΠ΅Ρ‚Π° langchain-gigachat. + +| ΠŸΡ€ΠΈΠΌΠ΅Ρ€ | ОписаниС | +| --------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| [rag](/cookbook/js/rag.ipynb) | ДСмонстрация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ RAG, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° вопросы ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ источнику | +| [tools](/cookbook/js/tools.ipynb) | Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ GigaChat API для поиска Π² ΠΈΠ½Ρ‚Π΅Ρ€Π΅Π½Π΅Ρ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сСрвиса Tavily | +| [extraction](/cookbook/js/extraction.ipynb) | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выдСлСния сущностСй Π² тСкстС | +| [langgraph_quickstart](/cookbook/js/langgraph_quickstart.ipynb) | Π›ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π³Π΅Π½Ρ‚Π° Π½Π° основС LangGraph.js ΠΈ GigaChat API | \ No newline at end of file diff --git a/js/deno.json b/cookbook/js/deno.json similarity index 100% rename from js/deno.json rename to cookbook/js/deno.json diff --git a/js/extraction.ipynb b/cookbook/js/extraction.ipynb similarity index 100% rename from js/extraction.ipynb rename to cookbook/js/extraction.ipynb diff --git a/js/langgraph_quickstart.ipynb b/cookbook/js/langgraph_quickstart.ipynb similarity index 100% rename from js/langgraph_quickstart.ipynb rename to cookbook/js/langgraph_quickstart.ipynb diff --git a/js/rag.ipynb b/cookbook/js/rag.ipynb similarity index 100% rename from js/rag.ipynb rename to cookbook/js/rag.ipynb diff --git a/js/tools.ipynb b/cookbook/js/tools.ipynb similarity index 100% rename from js/tools.ipynb rename to cookbook/js/tools.ipynb diff --git a/cookbook/playlists.ipynb b/cookbook/playlists.ipynb new file mode 100644 index 0000000000000..40bcb73191e38 --- /dev/null +++ b/cookbook/playlists.ipynb @@ -0,0 +1,203 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "id": "Lug-i9Ang0Cn" + }, + "source": [ + "# ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π² Spotify с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat\n", + "\n", + "Π­Ρ‚ΠΎΡ‚ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π² Spotify c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat.\n", + "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Client Id ΠΈ Client Secret Π² Spotify ΠΌΠΎΠΆΠ½ΠΎ [Ρ‚ΡƒΡ‚](https://developer.spotify.com/dashboard)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "AOL5NCErg0Cp", + "pycharm": { + "is_executing": true + } + }, + "outputs": [], + "source": [ + "!pip install spotipy langchain-gigachat" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true, + "id": "W02mN_okg0Cq", + "pycharm": { + "is_executing": true + } + }, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "import sys\n", + "\n", + "import spotipy\n", + "from langchain.agents import AgentExecutor, ZeroShotAgent\n", + "from langchain.tools import Tool\n", + "from langchain_gigachat.chat_models import GigaChat\n", + "from spotipy.oauth2 import SpotifyClientCredentials" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "9SABf0t2g0Cq" + }, + "outputs": [], + "source": [ + "os.environ[\"SP_ID\"] = \"\"\n", + "os.environ[\"SP_SECRET\"] = \"\"\n", + "\n", + "llm = GigaChat() # Use big model of GigaChat\n", + "\n", + "spotify = spotipy.Spotify(\n", + " client_credentials_manager=SpotifyClientCredentials(\n", + " client_id=os.getenv(\"SP_ID\"), client_secret=os.getenv(\"SP_SECRET\")\n", + " )\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RA5Ksuukg0Cr", + "outputId": "edb8e141-111b-4fa7-b960-5aa4d81c05bd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3m-----\n", + "Thought: Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ плСйлист с настроСниСм Π³Ρ€ΡƒΡΡ‚ΡŒ ΠΈ ΠΆΠ°Π½Ρ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ подходят для Ρ‚Π°ΠΊΠΎΠ³ΠΎ настроСния\n", + "Action: CREATE_PLAYLIST\n", + "Action Input: {\"happiness\": 0, \"genres\": [\"sad\", \"ballads\", \"love-songs\"]}\n", + "\u001b[0m\n", + "Observation: \u001b[36;1m\u001b[1;3mJohn Murphy β€” In the House - In a Heartbeat\n", + "Lana Del Rey β€” Carmen\n", + "CΓ©line Dion β€” My Heart Will Go On (Love Theme from \"Titanic\")\n", + "Lifehouse β€” Everything\n", + "TouchΓ© AmorΓ© β€” Condolences\n", + "Of Mice & Men β€” My Understandings\n", + "Coldplay β€” Warning Sign\n", + "Sigur RΓ³s β€” Untitled #1 (Vaka)\n", + "Troye Sivan β€” Happy Little Pill\n", + "B.o.B β€” Both of Us (feat. Taylor Swift)\u001b[0m\n", + "\u001b[32;1m\u001b[1;3m\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n", + "John Murphy β€” In the House - In a Heartbeat\n", + "Lana Del Rey β€” Carmen\n", + "CΓ©line Dion β€” My Heart Will Go On (Love Theme from \"Titanic\")\n", + "Lifehouse β€” Everything\n", + "TouchΓ© AmorΓ© β€” Condolences\n", + "Of Mice & Men β€” My Understandings\n", + "Coldplay β€” Warning Sign\n", + "Sigur RΓ³s β€” Untitled #1 (Vaka)\n", + "Troye Sivan β€” Happy Little Pill\n", + "B.o.B β€” Both of Us (feat. Taylor Swift)\n" + ] + } + ], + "source": [ + "def create_playlist(data):\n", + " \"\"\"Ѐункция получСния Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ\"\"\"\n", + " data = json.loads(data)\n", + " kwargs = {}\n", + " if \"energy\" in data:\n", + " kwargs[\"target_energy\"] = data[\"energy\"] / 100\n", + " if \"happiness\" in data:\n", + " kwargs[\"target_valence\"] = data[\"happiness\"] / 100\n", + " if \"dance\" in data:\n", + " kwargs[\"target_danceability\"] = data[\"dance\"] / 100\n", + " if \"genres\" in data:\n", + " kwargs[\"seed_genres\"] = data[\"genres\"][:5]\n", + " else:\n", + " kwargs[\"seed_genres\"] = [\"pop\", \"hip-hop\", \"rock\", \"r-n-b\"]\n", + "\n", + " results = spotify.recommendations(limit=10, **kwargs)\n", + " tracks = []\n", + " for track in results[\"tracks\"]:\n", + " name = f\"{track['artists'][0]['name']} β€” {track['name']}\"\n", + " os.write(1, f\"{name}\\n\".encode())\n", + " tracks.append(name)\n", + "\n", + " return \"\\n\".join(tracks)\n", + "\n", + "\n", + "tools = [\n", + " Tool.from_function(\n", + " func=create_playlist,\n", + " return_direct=True,\n", + " name=\"CREATE_PLAYLIST\",\n", + " description=\"\"\"ОписаниС: создаСт плСйлисты \\n ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:\n", + " {{\"happiness\": число ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ настроСниС запроса Π³Π΄Π΅ 0 - Π³Ρ€ΡƒΡΡ‚ΡŒ, ΠΏΠ΅Ρ‡Π°Π»ΡŒ, Π°Π³Ρ€Π΅ΡΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ 100 - ΡΡ‡Π°ΡΡ‚ΡŒΠ΅, вСсСльС\n", + " \"energy\": число ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠ½Π΅Ρ€Π³ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ запроса Π³Π΄Π΅ 0 β€” спокойствиС ΠΈ 100 β€” ΡΠ½Π΅Ρ€Π³ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€,\n", + " \"dance\": число ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π°Π½Ρ†Π΅Π²Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π³Π΄Π΅ 0 - спокойствиС ΠΈ 100 β€” Ρ‚Π°Π½Ρ†Π΅Π²Π°Π»ΡŒΠ½Π°Ρ ΠΌΡƒΠ·Ρ‹ΠΊΠ° Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€,\n", + " \"genres\": список ΠΎΡ‚ 1 Π΄ΠΎ 5 элСмСнтов Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΈΠ· этого списка [\"acoustic\", \"afrobeat\", \"alt-rock\", \"alternative\", \"ambient\", \"anime\", \"black-metal\", \"bluegrass\", \"blues\", \"bossanova\", \"brazil\", \"breakbeat\", \"british\", \"cantopop\", \"chicago-house\", \"children\", \"chill\", \"classical\", \"club\", \"comedy\", \"country\", \"dance\", \"dancehall\", \"death-metal\", \"deep-house\", \"detroit-techno\", \"disco\", \"disney\", \"drum-and-bass\", \"dub\", \"dubstep\", \"edm\", \"electro\", \"electronic\", \"emo\", \"folk\", \"forro\", \"french\", \"funk\", \"garage\", \"german\", \"gospel\", \"goth\", \"grindcore\", \"groove\", \"grunge\", \"guitar\", \"happy\", \"hard-rock\", \"hardcore\", \"hardstyle\", \"heavy-metal\", \"hip-hop\", \"holidays\", \"honky-tonk\", \"house\", \"idm\", \"indian\", \"indie\", \"indie-pop\", \"industrial\", \"iranian\", \"j-dance\", \"j-idol\", \"j-pop\", \"j-rock\", \"jazz\", \"k-pop\", \"kids\", \"latin\", \"latino\", \"malay\", \"mandopop\", \"metal\", \"metal-misc\", \"metalcore\", \"minimal-techno\", \"movies\", \"mpb\", \"new-age\", \"new-release\", \"opera\", \"pagode\", \"party\", \"philippines-opm\", \"piano\", \"pop\", \"pop-film\", \"post-dubstep\", \"power-pop\", \"progressive-house\", \"psych-rock\", \"punk\", \"punk-rock\", \"r-n-b\", \"rainy-day\", \"reggae\", \"reggaeton\", \"road-trip\", \"rock\", \"rock-n-roll\", \"rockabilly\", \"romance\", \"sad\", \"salsa\", \"samba\", \"sertanejo\", \"show-tunes\", \"singer-songwriter\", \"ska\", \"sleep\", \"songwriter\", \"soul\", \"soundtracks\", \"spanish\", \"study\", \"summer\", \"swedish\", \"synth-pop\", \"tango\", \"techno\", \"trance\", \"trip-hop\", \"turkish\", \"work-out\", \"world-music\"]}}''\n", + " \"\"\", # noqa: E501,\n", + " ),\n", + "]\n", + "\n", + "agent = ZeroShotAgent.from_llm_and_tools(llm=llm, tools=tools)\n", + "agent_executor = AgentExecutor.from_agent_and_tools(\n", + " agent=agent, tools=tools, verbose=True\n", + ")\n", + "\n", + "stdout = sys.stdout\n", + "\n", + "sys.stdout = stdout\n", + "\n", + "print(\n", + " agent_executor.run(\n", + " \"Π‘ΠΎΠ·Π΄Π°ΠΉ ΠΌΠ½Π΅ грустный плСйлист, ΠΊΠΎΠ³Π΄Π° хочСтся ΡΠ±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚ всСх ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ\"\n", + " )\n", + ")" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "langchain", + "language": "python", + "name": "langchain" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git "a/cookbook/sample_data/\320\274\320\260\321\201\321\202\320\265\321\200_\320\270_\320\274\320\260\321\200\320\263\320\260\321\200\320\270\321\202\320\260.txt" "b/cookbook/sample_data/\320\274\320\260\321\201\321\202\320\265\321\200_\320\270_\320\274\320\260\321\200\320\263\320\260\321\200\320\270\321\202\320\260.txt" new file mode 100644 index 0000000000000..08c4e92f266c4 --- /dev/null +++ "b/cookbook/sample_data/\320\274\320\260\321\201\321\202\320\265\321\200_\320\270_\320\274\320\260\321\200\320\263\320\260\321\200\320\270\321\202\320\260.txt" @@ -0,0 +1,838 @@ +ΠœΠΈΡ…Π°ΠΈΠ» Π‘ΡƒΠ»Π³Π°ΠΊΠΎΠ² + +ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΈ ΠœΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π° + +Москва 1984 + + +ВСкст пСчатаСтся Π² послСднСй ΠΏΡ€ΠΈΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΉ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ (рукописи хранятся Π² рукописном ΠΎΡ‚Π΄Π΅Π»Π΅ ГосударствСнной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π‘Π‘Π‘Π  ΠΈΠΌΠ΅Π½ΠΈ Π’. И. Π›Π΅Π½ΠΈΠ½Π°), Π° Ρ‚Π°ΠΊΠΆΠ΅ с исправлСниями ΠΈ дополнСниями, сдСланными ΠΏΠΎΠ΄ Π΄ΠΈΠΊΡ‚ΠΎΠ²ΠΊΡƒ писатСля Π΅Π³ΠΎ ΠΆΠ΅Π½ΠΎΠΉ, Π•. Π‘. Π‘ΡƒΠ»Π³Π°ΠΊΠΎΠ²ΠΎΠΉ. + + + +ЧАБВЬ ΠŸΠ•Π Π’ΠΠ― + + ...Π’Π°ΠΊ ΠΊΡ‚ΠΎ ΠΆ Ρ‚Ρ‹, Π½Π°ΠΊΠΎΠ½Π΅Ρ†? + – Π― – Ρ‡Π°ΡΡ‚ΡŒ Ρ‚ΠΎΠΉ силы, + Ρ‡Ρ‚ΠΎ Π²Π΅Ρ‡Π½ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ + Π·Π»Π° ΠΈ Π²Π΅Ρ‡Π½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π±Π»Π°Π³ΠΎ. + + Π“Π΅Ρ‚Π΅. «Ѐауст» + + + +Π“Π»Π°Π²Π° 1 + +Никогда Π½Π΅ Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°ΠΉΡ‚Π΅ с нСизвСстными + +ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ вСсною, Π² час Π½Π΅Π±Ρ‹Π²Π°Π»ΠΎ ΠΆΠ°Ρ€ΠΊΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Ρ‚Π°, Π² МосквС, Π½Π° ΠŸΠ°Ρ‚Ρ€ΠΈΠ°Ρ€ΡˆΠΈΡ… ΠΏΡ€ΡƒΠ΄Π°Ρ…, появились Π΄Π²Π° Π³Ρ€Π°ΠΆΠ΄Π°Π½ΠΈΠ½Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ…, ΠΎΠ΄Π΅Ρ‚Ρ‹ΠΉ Π² Π»Π΅Ρ‚Π½ΡŽΡŽ ΡΠ΅Ρ€Π΅Π½ΡŒΠΊΡƒΡŽ ΠΏΠ°Ρ€Ρƒ, Π±Ρ‹Π» малСнького роста, ΡƒΠΏΠΈΡ‚Π°Π½, лыс, свою ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΡƒΡŽ ΡˆΠ»ΡΠΏΡƒ ΠΏΠΈΡ€ΠΎΠΆΠΊΠΎΠΌ нСс Π² Ρ€ΡƒΠΊΠ΅, Π° Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²Ρ‹Π±Ρ€ΠΈΡ‚ΠΎΠΌ Π»ΠΈΡ†Π΅ Π΅Π³ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π»ΠΈΡΡŒ ΡΠ²Π΅Ρ€Ρ…ΡŠΠ΅ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΡ‡ΠΊΠΈ Π² Ρ‡Π΅Ρ€Π½ΠΎΠΉ Ρ€ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΎΠΏΡ€Π°Π²Π΅. Π’Ρ‚ΠΎΡ€ΠΎΠΉ – плСчистый, Ρ€Ρ‹ΠΆΠ΅Π²Π°Ρ‚Ρ‹ΠΉ, вихрастый ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π² Π·Π°Π»ΠΎΠΌΠ»Π΅Π½Π½ΠΎΠΉ Π½Π° Π·Π°Ρ‚Ρ‹Π»ΠΎΠΊ ΠΊΠ»Π΅Ρ‚Ρ‡Π°Ρ‚ΠΎΠΉ ΠΊΠ΅ΠΏΠΊΠ΅ – Π±Ρ‹Π» Π² ΠΊΠΎΠ²Π±ΠΎΠΉΠΊΠ΅, ΠΆΠ΅Π²Π°Π½Ρ‹Ρ… Π±Π΅Π»Ρ‹Ρ… Π±Ρ€ΡŽΠΊΠ°Ρ… ΠΈ Π² Ρ‡Π΅Ρ€Π½Ρ‹Ρ… Ρ‚Π°ΠΏΠΎΡ‡ΠΊΠ°Ρ…. + +ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π±Ρ‹Π» Π½Π΅ ΠΊΡ‚ΠΎ ΠΈΠ½ΠΎΠΉ, ΠΊΠ°ΠΊ ΠœΠΈΡ…Π°ΠΈΠ» АлСксандрович Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, ΠΏΡ€Π΅Π΄ΡΠ΅Π΄Π°Ρ‚Π΅Π»ΡŒ правлСния ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΡ… московских Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹Ρ… ассоциаций, сокращСнно ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΠΎΠΉ ΠœΠΠ‘Π‘ΠžΠ›Π˜Π’, ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ толстого худоТСствСнного ΠΆΡƒΡ€Π½Π°Π»Π°, Π° ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ спутник Π΅Π³ΠΎ – поэт Иван НиколаСвич ΠŸΠΎΠ½Ρ‹Ρ€Π΅Π², ΠΏΠΈΡˆΡƒΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ псСвдонимом Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ. + +Попав Π² Ρ‚Π΅Π½ΡŒ Ρ‡ΡƒΡ‚ΡŒ Π·Π΅Π»Π΅Π½Π΅ΡŽΡ‰ΠΈΡ… Π»ΠΈΠΏ, писатСли ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄ΠΎΠ»Π³ΠΎΠΌ Π±Ρ€ΠΎΡΠΈΠ»ΠΈΡΡŒ ΠΊ пСстро Ρ€Π°ΡΠΊΡ€Π°ΡˆΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄ΠΎΡ‡ΠΊΠ΅ с надписью «Пиво ΠΈ Π²ΠΎΠ΄Ρ‹Β». + +Π”Π°, слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΡΡ‚Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ этого ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ майского Π²Π΅Ρ‡Π΅Ρ€Π°. НС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ Π±ΡƒΠ΄ΠΎΡ‡ΠΊΠΈ, Π½ΠΎ ΠΈ Π²ΠΎ всСй Π°Π»Π»Π΅Π΅, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Малой Π‘Ρ€ΠΎΠ½Π½ΠΎΠΉ ΡƒΠ»ΠΈΡ†Π΅, Π½Π΅ оказалось Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Π’ Ρ‚ΠΎΡ‚ час, ΠΊΠΎΠ³Π΄Π° ΡƒΠΆ, каТСтся, ΠΈ сил Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄Ρ‹ΡˆΠ°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° солнцС, раскалив ΠœΠΎΡΠΊΠ²Ρƒ, Π² сухом Ρ‚ΡƒΠΌΠ°Π½Π΅ валилось ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ Π·Π° Π‘Π°Π΄ΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΡŒΡ†ΠΎ, – Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΏΠΎΠ΄ Π»ΠΈΠΏΡ‹, Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ сСл Π½Π° скамСйку, пуста Π±Ρ‹Π»Π° аллСя. + +– Π”Π°ΠΉΡ‚Π΅ Π½Π°Ρ€Π·Π°Π½Ρƒ, – попросил Π‘Π΅Ρ€Π»ΠΈΠΎΠ·. + +– Нарзану Π½Π΅Ρ‚Ρƒ, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»Π° ΠΆΠ΅Π½Ρ‰ΠΈΠ½Π° Π² Π±ΡƒΠ΄ΠΎΡ‡ΠΊΠ΅ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ обидСлась. + +– Пиво Π΅ΡΡ‚ΡŒ? – сиплым голосом освСдомился Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ. + +– Пиво ΠΏΡ€ΠΈΠ²Π΅Π·ΡƒΡ‚ ΠΊ Π²Π΅Ρ‡Π΅Ρ€Ρƒ, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»Π° ΠΆΠ΅Π½Ρ‰ΠΈΠ½Π°. + +– А Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ? – спросил Π‘Π΅Ρ€Π»ΠΈΠΎΠ·. + +– Абрикосовая, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСплая, – сказала ΠΆΠ΅Π½Ρ‰ΠΈΠ½Π°. + +– Ну, Π΄Π°Π²Π°ΠΉΡ‚Π΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅!.. + +Абрикосовая Π΄Π°Π»Π° ΠΎΠ±ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΆΠ΅Π»Ρ‚ΡƒΡŽ ΠΏΠ΅Π½Ρƒ, ΠΈ Π² Π²ΠΎΠ·Π΄ΡƒΡ…Π΅ Π·Π°ΠΏΠ°Ρ…Π»ΠΎ парикмахСрской. Напившись, Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΠΊΠ°Ρ‚ΡŒ, Ρ€Π°ΡΠΏΠ»Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ ΠΈ ΡƒΡΠ΅Π»ΠΈΡΡŒ Π½Π° скамСйкС Π»ΠΈΡ†ΠΎΠΌ ΠΊ ΠΏΡ€ΡƒΠ΄Ρƒ ΠΈ спиной ΠΊ Π‘Ρ€ΠΎΠ½Π½ΠΎΠΉ. + +Π’ΡƒΡ‚ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈΠ»Π°ΡΡŒ вторая ΡΡ‚Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΡΠ°ΡŽΡ‰Π°ΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Π°. Он Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ пСрСстал ΠΈΠΊΠ°Ρ‚ΡŒ, сСрдцС Π΅Π³ΠΎ стукнуло ΠΈ Π½Π° мгновСньС ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»ΠΎΡΡŒ, ΠΏΠΎΡ‚ΠΎΠΌ Π²Π΅Ρ€Π½ΡƒΠ»ΠΎΡΡŒ, Π½ΠΎ с Ρ‚ΡƒΠΏΠΎΠΉ ΠΈΠ³Π»ΠΎΠΉ, засСвшСй Π² Π½Π΅ΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Π° ΠΎΡ…Π²Π°Ρ‚ΠΈΠ» нСобоснованный, Π½ΠΎ ΡΡ‚ΠΎΠ»ΡŒ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ страх, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ тотчас ΠΆΠ΅ Π±Π΅ΠΆΠ°Ρ‚ΡŒ с ΠŸΠ°Ρ‚Ρ€ΠΈΠ°Ρ€ΡˆΠΈΡ… Π±Π΅Π· оглядки. Π‘Π΅Ρ€Π»ΠΈΠΎΠ· тоскливо оглянулся, Π½Π΅ понимая, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π½Π°ΠΏΡƒΠ³Π°Π»ΠΎ. Он ΠΏΠΎΠ±Π»Π΅Π΄Π½Π΅Π», Π²Ρ‹Ρ‚Π΅Ρ€ Π»ΠΎΠ± ΠΏΠ»Π°Ρ‚ΠΊΠΎΠΌ, ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»: Β«Π§Ρ‚ΠΎ это со ΠΌΠ½ΠΎΠΉ? Π­Ρ‚ΠΎΠ³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΎ... сСрдцС ΡˆΠ°Π»ΠΈΡ‚... я пСрСутомился. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, ΠΏΠΎΡ€Π° Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ всС ΠΊ Ρ‡Π΅Ρ€Ρ‚Ρƒ ΠΈ Π² Кисловодск...Β» + +И Ρ‚ΡƒΡ‚ Π·Π½ΠΎΠΉΠ½Ρ‹ΠΉ Π²ΠΎΠ·Π΄ΡƒΡ… сгустился ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ, ΠΈ соткался ΠΈΠ· этого Π²ΠΎΠ·Π΄ΡƒΡ…Π° ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ Π³Ρ€Π°ΠΆΠ΄Π°Π½ΠΈΠ½ прСстранного Π²ΠΈΠ΄Π°. На малСнькой Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ТокСйский ΠΊΠ°Ρ€Ρ‚ΡƒΠ·ΠΈΠΊ, ΠΊΠ»Π΅Ρ‚Ρ‡Π°Ρ‚Ρ‹ΠΉ ΠΊΡƒΡ€Π³ΡƒΠ·Ρ‹ΠΉ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹ΠΉ ΠΆΠ΅ ΠΏΠΈΠ΄ΠΆΠ°Ρ‡ΠΎΠΊ... Π“Ρ€Π°ΠΆΠ΄Π°Π½ΠΈΠ½ ростом Π² саТСнь, Π½ΠΎ Π² ΠΏΠ»Π΅Ρ‡Π°Ρ… ΡƒΠ·ΠΎΠΊ, Ρ…ΡƒΠ΄ Π½Π΅ΠΈΠΌΠΎΠ²Π΅Ρ€Π½ΠΎ, ΠΈ физиономия, ΠΏΡ€ΠΎΡˆΡƒ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, глумливая. + +Π–ΠΈΠ·Π½ΡŒ Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Π° ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Π»Π°ΡΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊ Π½Π΅ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΌ явлСниям ΠΎΠ½ Π½Π΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ. Π•Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ±Π»Π΅Π΄Π½Π΅Π², ΠΎΠ½ Π²Ρ‹Ρ‚Π°Ρ€Π°Ρ‰ΠΈΠ» Π³Π»Π°Π·Π° ΠΈ Π² смятСнии ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»: Β«Π­Ρ‚ΠΎΠ³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ!..Β» + +Но это, ΡƒΠ²Ρ‹, Π±Ρ‹Π»ΠΎ, ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ, сквозь ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π½ΠΎ, Π³Ρ€Π°ΠΆΠ΄Π°Π½ΠΈΠ½, Π½Π΅ касаясь Π·Π΅ΠΌΠ»ΠΈ, качался ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ ΠΈ Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ. + +Π’ΡƒΡ‚ уТас Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΎΠ²Π»Π°Π΄Π΅Π» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π·Π°ΠΊΡ€Ρ‹Π» Π³Π»Π°Π·Π°. А ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΈΡ… ΠΎΡ‚ΠΊΡ€Ρ‹Π», ΡƒΠ²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎ всС ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ, ΠΌΠ°Ρ€Π΅Π²ΠΎ Ρ€Π°ΡΡ‚Π²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, ΠΊΠ»Π΅Ρ‚Ρ‡Π°Ρ‚Ρ‹ΠΉ исчСз, Π° Π·Π°ΠΎΠ΄Π½ΠΎ ΠΈ тупая ΠΈΠ³Π»Π° выскочила ΠΈΠ· сСрдца. + +– Π€Ρƒ Ρ‚Ρ‹ Ρ‡Π΅Ρ€Ρ‚! – воскликнул Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, – Ρ‚Ρ‹ знаСшь, Иван, Ρƒ мСня сСйчас Π΅Π΄Π²Π° ΡƒΠ΄Π°Ρ€ ΠΎΡ‚ ΠΆΠ°Ρ€Ρ‹ Π½Π΅ сдСлался! Π”Π°ΠΆΠ΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Π³Π°Π»Π»ΡŽΡ†ΠΈΠ½Π°Ρ†ΠΈΠΈ Π±Ρ‹Π»ΠΎ, – ΠΎΠ½ попытался ΡƒΡΠΌΠ΅Ρ…Π½ΡƒΡ‚ΡŒΡΡ, Π½ΠΎ Π² Π³Π»Π°Π·Π°Ρ… Π΅Π³ΠΎ Π΅Ρ‰Π΅ ΠΏΡ€Ρ‹Π³Π°Π»Π° Ρ‚Ρ€Π΅Π²ΠΎΠ³Π°, ΠΈ Ρ€ΡƒΠΊΠΈ Π΄Ρ€ΠΎΠΆΠ°Π»ΠΈ. + +Однако постСпСнно ΠΎΠ½ успокоился, обмахнулся ΠΏΠ»Π°Ρ‚ΠΊΠΎΠΌ ΠΈ, произнСся довольно Π±ΠΎΠ΄Ρ€ΠΎ: «Ну-с, ΠΈΡ‚Π°ΠΊ...Β» – ΠΏΠΎΠ²Π΅Π» Ρ€Π΅Ρ‡ΡŒ, ΠΏΡ€Π΅Ρ€Π²Π°Π½Π½ΡƒΡŽ ΠΏΠΈΡ‚ΡŒΠ΅ΠΌ абрикосовой. + +Π Π΅Ρ‡ΡŒ эта, ΠΊΠ°ΠΊ впослСдствии ΡƒΠ·Π½Π°Π»ΠΈ, шла ΠΎΠ± Π˜ΠΈΡΡƒΡΠ΅ Π₯ристС. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π·Π°ΠΊΠ°Π·Π°Π» поэту для ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΊΠ½ΠΈΠΆΠΊΠΈ ΠΆΡƒΡ€Π½Π°Π»Π° Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π°Π½Ρ‚ΠΈΡ€Π΅Π»ΠΈΠ³ΠΈΠΎΠ·Π½ΡƒΡŽ поэму. Π­Ρ‚Ρƒ поэму Иван НиколаСвич сочинил, ΠΈ Π² ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ срок, Π½ΠΎ, ΠΊ соТалСнию, Сю Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° нисколько Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΠ». ΠžΡ‡Π΅Ρ€Ρ‚ΠΈΠ» Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ Π³Π»Π°Π²Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π»ΠΈΡ†ΠΎ своСй поэмы, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π˜ΠΈΡΡƒΡΠ°, ΠΎΡ‡Π΅Π½ΡŒ Ρ‡Π΅Ρ€Π½Ρ‹ΠΌΠΈ красками, ΠΈ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ всю поэму ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ, ΠΏΠΎ мнСнию Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ. И Π²ΠΎΡ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Ρ‡ΠΈΡ‚Π°Π» поэту Π½Π΅Ρ‡Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ± Π˜ΠΈΡΡƒΡΠ΅, с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ поэта. Π’Ρ€ΡƒΠ΄Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π²Π΅Π»ΠΎ Ивана НиколаСвича – ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π»ΠΈ сила Π΅Π³ΠΎ Ρ‚Π°Π»Π°Π½Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ нСзнакомство с вопросом, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ собирался ΠΏΠΈΡΠ°Ρ‚ΡŒ, – Π½ΠΎ Π˜ΠΈΡΡƒΡ Π² Π΅Π³ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ получился Π½Ρƒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ΠΆΠΈΠ²ΠΎΠΉ, хотя ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΊ сСбС пСрсонаТ. Π‘Π΅Ρ€Π»ΠΈΠΎΠ· ΠΆΠ΅ Ρ…ΠΎΡ‚Π΅Π» Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ поэту, Ρ‡Ρ‚ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠ² Π±Ρ‹Π» Π˜ΠΈΡΡƒΡ, ΠΏΠ»ΠΎΡ… Π»ΠΈ, Ρ…ΠΎΡ€ΠΎΡˆ Π»ΠΈ, Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π˜ΠΈΡΡƒΡΠ°-Ρ‚ΠΎ этого, ΠΊΠ°ΠΊ личности, вовсС Π½Π΅ сущСствовало Π½Π° свСтС ΠΈ Ρ‡Ρ‚ΠΎ всС рассказы ΠΎ Π½Π΅ΠΌ – простыС Π²Ρ‹Π΄ΡƒΠΌΠΊΠΈ, самый ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΈΡ„. + +Надо Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π±Ρ‹Π» Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ Π½Π°Ρ‡ΠΈΡ‚Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠΌΠ΅Π»ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» Π² своСй Ρ€Π΅Ρ‡ΠΈ Π½Π° Π΄Ρ€Π΅Π²Π½ΠΈΡ… историков, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚ΠΎΠ³ΠΎ Π€ΠΈΠ»ΠΎΠ½Π° АлСксандрийского, Π½Π° блСстящС ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π˜ΠΎΡΠΈΡ„Π° Ѐлавия, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½ΠΈ словом Π½Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΠΈΡ… ΠΎ сущСствовании Π˜ΠΈΡΡƒΡΠ°. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ ΡΠΎΠ»ΠΈΠ΄Π½ΡƒΡŽ ΡΡ€ΡƒΠ΄ΠΈΡ†ΠΈΡŽ, ΠœΠΈΡ…Π°ΠΈΠ» АлСксандрович сообщил поэту, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΡ‡ΠΈΠΌ, ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ мСсто Π² 15-ΠΉ ΠΊΠ½ΠΈΠ³Π΅, Π² Π³Π»Π°Π²Π΅ 44-ΠΉ Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚Ρ‹Ρ… Π’Π°Ρ†ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… «Анналов», Π³Π΄Π΅ говорится ΠΎ ΠΊΠ°Π·Π½ΠΈ Π˜ΠΈΡΡƒΡΠ°, – Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ позднСйшая поддСльная вставка. + +ΠŸΠΎΡΡ‚, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ всС, сообщаСмоС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, являлось Π½ΠΎΠ²ΠΎΡΡ‚ΡŒΡŽ, Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ»ΡƒΡˆΠ°Π» ΠœΠΈΡ…Π°ΠΈΠ»Π° АлСксандровича, уставив Π½Π° Π½Π΅Π³ΠΎ свои Π±ΠΎΠΉΠΊΠΈΠ΅ Π·Π΅Π»Π΅Π½Ρ‹Π΅ Π³Π»Π°Π·Π°, ΠΈ лишь ΠΈΠ·Ρ€Π΅Π΄ΠΊΠ° ΠΈΠΊΠ°Π», ΡˆΠ΅ΠΏΠΎΡ‚ΠΎΠΌ ругая Π°Π±Ρ€ΠΈΠΊΠΎΡΠΎΠ²ΡƒΡŽ Π²ΠΎΠ΄Ρƒ. + +– НСт Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ восточной Ρ€Π΅Π»ΠΈΠ³ΠΈΠΈ, – Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, – Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ нСпорочная Π΄Π΅Π²Π° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π»Π° Π±Ρ‹ Π½Π° свСт Π±ΠΎΠ³Π°. И христианС, Π½Π΅ Π²Ρ‹Π΄ΡƒΠΌΠ°Π² Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ создали своСго Π˜ΠΈΡΡƒΡΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΎ Π² ΠΆΠΈΠ²Ρ‹Ρ…. Π’ΠΎΡ‚ Π½Π° это-Ρ‚ΠΎ ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΡƒΠΏΠΎΡ€... + +Высокий Ρ‚Π΅Π½ΠΎΡ€ Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Π° разносился Π² пустынной Π°Π»Π»Π΅Π΅, ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠœΠΈΡ…Π°ΠΈΠ» АлСксандрович забирался Π² Π΄Π΅Π±Ρ€ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, Π½Π΅ рискуя ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ сСбС шСю, лишь ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, – поэт ΡƒΠ·Π½Π°Π²Π°Π» всС большС ΠΈ большС интСрСсного ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€ΠΎ СгипСтского ΠžΠ·ΠΈΡ€ΠΈΡΠ°, благостного Π±ΠΎΠ³Π° ΠΈ сына НСба ΠΈ Π—Π΅ΠΌΠ»ΠΈ, ΠΈ ΠΏΡ€ΠΎ финикийского Π±ΠΎΠ³Π° Π€Π°ΠΌΠΌΡƒΠ·Π°, ΠΈ ΠΏΡ€ΠΎ ΠœΠ°Ρ€Π΄ΡƒΠΊΠ°, ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎ ΠΌΠ΅Π½Π΅Π΅ извСстного Π³Ρ€ΠΎΠ·Π½ΠΎΠ³ΠΎ Π±ΠΎΠ³Π° Π’ΠΈΡ†Π»ΠΈΠΏΡƒΡ†Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ вСсьма ΠΏΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ Π½Π΅ΠΊΠΎΠ³Π΄Π° Π°Ρ†Ρ‚Π΅ΠΊΠΈ Π² МСксикС. + +И Π²ΠΎΡ‚ ΠΊΠ°ΠΊ Ρ€Π°Π· Π² Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° ΠœΠΈΡ…Π°ΠΈΠ» АлСксандрович рассказывал поэту ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π°Ρ†Ρ‚Π΅ΠΊΠΈ Π»Π΅ΠΏΠΈΠ»ΠΈ ΠΈΠ· тСста Ρ„ΠΈΠ³ΡƒΡ€ΠΊΡƒ Π’ΠΈΡ†Π»ΠΈΠΏΡƒΡ†Π»ΠΈ, Π² Π°Π»Π»Π΅Π΅ показался ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. + +ВпослСдствии, ΠΊΠΎΠ³Π΄Π°, ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½Π½ΠΎ говоря, Π±Ρ‹Π»ΠΎ ΡƒΠΆΠ΅ ΠΏΠΎΠ·Π΄Π½ΠΎ, Ρ€Π°Π·Π½Ρ‹Π΅ учрСТдСния прСдставили свои сводки с описаниСм этого Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Π‘Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈΡ… Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ изумлСния. Π’Π°ΠΊ, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… сказано, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ этот Π±Ρ‹Π» малСнького роста, Π·ΡƒΠ±Ρ‹ ΠΈΠΌΠ΅Π» Π·ΠΎΠ»ΠΎΡ‚Ρ‹Π΅ ΠΈ Ρ…Ρ€ΠΎΠΌΠ°Π» Π½Π° ΠΏΡ€Π°Π²ΡƒΡŽ Π½ΠΎΠ³Ρƒ. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ – Ρ‡Ρ‚ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π±Ρ‹Π» росту Π³Ρ€ΠΎΠΌΠ°Π΄Π½ΠΎΠ³ΠΎ, ΠΊΠΎΡ€ΠΎΠ½ΠΊΠΈ ΠΈΠΌΠ΅Π» ΠΏΠ»Π°Ρ‚ΠΈΠ½ΠΎΠ²Ρ‹Π΅, Ρ…Ρ€ΠΎΠΌΠ°Π» Π½Π° Π»Π΅Π²ΡƒΡŽ Π½ΠΎΠ³Ρƒ. Π’Ρ€Π΅Ρ‚ΡŒΡ лаконичСски сообщаСт, Ρ‡Ρ‚ΠΎ особых ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Ρƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π½Π΅ Π±Ρ‹Π»ΠΎ. + +ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡΡ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· этих сводок Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ годится. + +РаньшС всСго: Π½ΠΈ Π½Π° ΠΊΠ°ΠΊΡƒΡŽ Π½ΠΎΠ³Ρƒ описываСмый Π½Π΅ Ρ…Ρ€ΠΎΠΌΠ°Π», ΠΈ росту Π±Ρ‹Π» Π½Π΅ малСнького ΠΈ Π½Π΅ Π³Ρ€ΠΎΠΌΠ°Π΄Π½ΠΎΠ³ΠΎ, Π° просто высокого. Π§Ρ‚ΠΎ касаСтся Π·ΡƒΠ±ΠΎΠ², Ρ‚ΠΎ с Π»Π΅Π²ΠΎΠΉ стороны Ρƒ Π½Π΅Π³ΠΎ Π±Ρ‹Π»ΠΈ ΠΏΠ»Π°Ρ‚ΠΈΠ½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΡ€ΠΎΠ½ΠΊΠΈ, Π° с ΠΏΡ€Π°Π²ΠΎΠΉ – Π·ΠΎΠ»ΠΎΡ‚Ρ‹Π΅. Он Π±Ρ‹Π» Π² Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΌ сСром ΠΊΠΎΡΡ‚ΡŽΠΌΠ΅, Π² Π·Π°Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ…, Π² Ρ†Π²Π΅Ρ‚ ΠΊΠΎΡΡ‚ΡŽΠΌΠ°, туфлях. Π‘Π΅Ρ€Ρ‹ΠΉ Π±Π΅Ρ€Π΅Ρ‚ ΠΎΠ½ Π»ΠΈΡ…ΠΎ Π·Π°Π»ΠΎΠΌΠΈΠ» Π½Π° ΡƒΡ…ΠΎ, ΠΏΠΎΠ΄ ΠΌΡ‹ΡˆΠΊΠΎΠΉ нСс Ρ‚Ρ€ΠΎΡΡ‚ΡŒ с Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ набалдашником Π² Π²ΠΈΠ΄Π΅ Π³ΠΎΠ»ΠΎΠ²Ρ‹ пудСля. По Π²ΠΈΠ΄Ρƒ – Π»Π΅Ρ‚ сорока с лишним. Π ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΡ€ΠΈΠ²ΠΎΠΉ. Π’Ρ‹Π±Ρ€ΠΈΡ‚ Π³Π»Π°Π΄ΠΊΠΎ. Π‘Ρ€ΡŽΠ½Π΅Ρ‚. ΠŸΡ€Π°Π²Ρ‹ΠΉ Π³Π»Π°Π· Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ, Π»Π΅Π²Ρ‹ΠΉ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ. Π‘Ρ€ΠΎΠ²ΠΈ Ρ‡Π΅Ρ€Π½Ρ‹Π΅, Π½ΠΎ ΠΎΠ΄Π½Π° Π²Ρ‹ΡˆΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π‘Π»ΠΎΠ²ΠΎΠΌ – иностранСц. + +ΠŸΡ€ΠΎΠΉΠ΄Ρ ΠΌΠΈΠΌΠΎ скамьи, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π»ΠΈΡΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ поэт, иностранСц покосился Π½Π° Π½ΠΈΡ…, остановился ΠΈ Π²Π΄Ρ€ΡƒΠ³ усСлся Π½Π° сосСднСй скамСйкС, Π² Π΄Π²ΡƒΡ… ΡˆΠ°Π³Π°Ρ… ΠΎΡ‚ приятСлСй. + +«НСмСц», – ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·. + +«Англичанин, – ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ, – ишь, ΠΈ Π½Π΅ ΠΆΠ°Ρ€ΠΊΠΎ Π΅ΠΌΡƒ Π² ΠΏΠ΅Ρ€Ρ‡Π°Ρ‚ΠΊΠ°Ρ…Β». + +А иностранСц ΠΎΠΊΠΈΠ½ΡƒΠ» взглядом высокиС Π΄ΠΎΠΌΠ°, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠΌ окаймлявшиС ΠΏΡ€ΡƒΠ΄, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ стало, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΡ‚ это мСсто ΠΎΠ½ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π΅Π³ΠΎ заинтСрСсовало. + +Он остановил свой Π²Π·ΠΎΡ€ Π½Π° Π²Π΅Ρ€Ρ…Π½ΠΈΡ… этаТах, ΠΎΡΠ»Π΅ΠΏΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΡ… Π² стСклах ΠΈΠ·Π»ΠΎΠΌΠ°Π½Π½ΠΎΠ΅ ΠΈ навсСгда уходящСС ΠΎΡ‚ ΠœΠΈΡ…Π°ΠΈΠ»Π° АлСксандровича солнцС, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π²Π΅Π» Π΅Π³ΠΎ Π²Π½ΠΈΠ·, Π³Π΄Π΅ стСкла Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΡ€Π΅Π΄Π²Π΅Ρ‡Π΅Ρ€Π½Π΅ Ρ‚Π΅ΠΌΠ½Π΅Ρ‚ΡŒ, Ρ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΡΠ½ΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ усмСхнулся, прищурился, Ρ€ΡƒΠΊΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» Π½Π° набалдашник, Π° ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΎΠ΄ΠΎΠΊ Π½Π° Ρ€ΡƒΠΊΠΈ. + +– Π’Ρ‹, Иван, – Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, – ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ сатиричСски ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΠ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π˜ΠΈΡΡƒΡΠ°, сына боТия, Π½ΠΎ соль-Ρ‚ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Π΄ΠΎ Π˜ΠΈΡΡƒΡΠ° родился Π΅Ρ‰Π΅ ряд сынов Π±ΠΎΠΆΠΈΠΈΡ…, ΠΊΠ°ΠΊ, скаТСм, фригийский Аттис, ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΆΠ΅ говоря, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ роТдался ΠΈ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π˜ΠΈΡΡƒΡΠ°, ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Ρ‹, вмСсто роТдСния ΠΈ, скаТСм, ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° Π²ΠΎΠ»Ρ…Π²ΠΎΠ², описал Π½Π΅Π»Π΅ΠΏΡ‹Π΅ слухи ΠΎΠ± этом Ρ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ... А Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ Ρ‚Π²ΠΎΠ΅ΠΌΡƒ рассказу, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ родился!.. + +Π’ΡƒΡ‚ Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ сдСлал ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π°ΠΌΡƒΡ‡ΠΈΠ²ΡˆΡƒΡŽ Π΅Π³ΠΎ ΠΈΠΊΠΎΡ‚Ρƒ, Π·Π°Π΄Π΅Ρ€ΠΆΠ°Π² Π΄Ρ‹Ρ…Π°Π½ΠΈΠ΅, ΠΎΡ‚Ρ‡Π΅Π³ΠΎ ΠΈΠΊΠ½ΡƒΠ» ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈ Π³Ρ€ΠΎΠΌΡ‡Π΅, ΠΈ Π² этот ΠΆΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π‘Π΅Ρ€Π»ΠΈΠΎΠ· ΠΏΡ€Π΅Ρ€Π²Π°Π» свою Ρ€Π΅Ρ‡ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ иностранСц Π²Π΄Ρ€ΡƒΠ³ поднялся ΠΈ направился ΠΊ писатСлям. + +Π’Π΅ поглядСли Π½Π° Π½Π΅Π³ΠΎ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½Π½ΠΎ. + +– Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅ мСня, поТалуйста, – Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» подошСдший с иностранным Π°ΠΊΡ†Π΅Π½Ρ‚ΠΎΠΌ, Π½ΠΎ Π½Π΅ ковСркая слов, – Ρ‡Ρ‚ΠΎ я, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‡ΠΈ Π·Π½Π°ΠΊΠΎΠΌ, позволяю сСбС... Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ вашСй ΡƒΡ‡Π΅Π½ΠΎΠΉ бСсСды Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ интСрСсСн, Ρ‡Ρ‚ΠΎ... + +Π’ΡƒΡ‚ ΠΎΠ½ Π²Π΅ΠΆΠ»ΠΈΠ²ΠΎ снял Π±Π΅Ρ€Π΅Ρ‚, ΠΈ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΏΠΎΠ΄Π½ΡΡ‚ΡŒΡΡ ΠΈ Ρ€Π°ΡΠΊΠ»Π°Π½ΡΡ‚ΡŒΡΡ. + +«НСт, скорСС Ρ„Ρ€Π°Π½Ρ†ΡƒΠ·...Β» – ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·. + +«Поляк?..Β» – ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ. + +НСобходимо Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° поэта иностранСц с ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΆΠ΅ слов ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π» ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Π° Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Ρƒ скорСС понравился, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ понравился, Π°... ΠΊΠ°ΠΊ Π±Ρ‹ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ... заинтСрСсовал, Ρ‡Ρ‚ΠΎ Π»ΠΈ. + +– Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡΠ΅ΡΡ‚ΡŒ? – Π²Π΅ΠΆΠ»ΠΈΠ²ΠΎ попросил иностранСц, ΠΈ приятСли ΠΊΠ°ΠΊ-Ρ‚ΠΎ нСвольно Ρ€Π°Π·Π΄Π²ΠΈΠ½ΡƒΠ»ΠΈΡΡŒ; иностранСц Π»ΠΎΠ²ΠΊΠΎ усСлся ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΈ тотчас вступил Π² Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€. + +– Если я Π½Π΅ ΠΎΡΠ»Ρ‹ΡˆΠ°Π»ΡΡ, Π²Ρ‹ ΠΈΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π˜ΠΈΡΡƒΡΠ° Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π° свСтС? – спросил иностранСц, обращая ΠΊ Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Ρƒ свой Π»Π΅Π²Ρ‹ΠΉ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ Π³Π»Π°Π·. + +– НСт, Π²Ρ‹ Π½Π΅ ΠΎΡΠ»Ρ‹ΡˆΠ°Π»ΠΈΡΡŒ, – ΡƒΡ‡Ρ‚ΠΈΠ²ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, – ΠΈΠΌΠ΅Π½Π½ΠΎ это я ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ». + +– Ах, ΠΊΠ°ΠΊ интСрСсно! – воскликнул иностранСц. + +«А ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‡Π΅Ρ€Ρ‚Π° Π΅ΠΌΡƒ Π½Π°Π΄ΠΎ?Β» – ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ ΠΈ нахмурился. + +– А Π²Ρ‹ соглашались с вашим собСсСдником? – освСдомился нСизвСстный, ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΠ²ΡˆΠΈΡΡŒ Π²ΠΏΡ€Π°Π²ΠΎ ΠΊ Π‘Π΅Π·Π΄ΠΎΠΌΠ½ΠΎΠΌΡƒ. + +– На всС сто! – ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» Ρ‚ΠΎΡ‚, любя Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π²Ρ‹Ρ‡ΡƒΡ€Π½ΠΎ ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π°Π»ΡŒΠ½ΠΎ. + +– Π˜Π·ΡƒΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ! – воскликнул Π½Π΅ΠΏΡ€ΠΎΡˆΠ΅Π½Ρ‹ΠΉ собСсСдник ΠΈ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ воровски ΠΎΠ³Π»ΡΠ½ΡƒΠ²ΡˆΠΈΡΡŒ ΠΈ ΠΏΡ€ΠΈΠ³Π»ΡƒΡˆΠΈΠ² свой Π½ΠΈΠ·ΠΊΠΈΠΉ голос, сказал: – ΠŸΡ€ΠΎΡΡ‚ΠΈΡ‚Π΅ мою Π½Π°Π²ΡΠ·Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ, Π½ΠΎ я Ρ‚Π°ΠΊ понял, Ρ‡Ρ‚ΠΎ Π²Ρ‹, ΠΏΠΎΠΌΠΈΠΌΠΎ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Π΅Ρ‰Π΅ ΠΈ Π½Π΅ Π²Π΅Ρ€ΠΈΡ‚Π΅ Π² Π±ΠΎΠ³Π°? – ΠΎΠ½ сдСлал испуганныС Π³Π»Π°Π·Π° ΠΈ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΠ»: – ΠšΠ»ΡΠ½ΡƒΡΡŒ, я Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ скаТу. + +– Π”Π°, ΠΌΡ‹ Π½Π΅ Π²Π΅Ρ€ΠΈΠΌ Π² Π±ΠΎΠ³Π°, – Ρ‡ΡƒΡ‚ΡŒ ΡƒΠ»Ρ‹Π±Π½ΡƒΠ²ΡˆΠΈΡΡŒ испугу интуриста, ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·. – Но ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ свободно. + +Π˜Π½ΠΎΡΡ‚Ρ€Π°Π½Π΅Ρ† откинулся Π½Π° спинку скамСйки ΠΈ спросил, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ·Π³Π½ΡƒΠ² ΠΎΡ‚ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚ΡΡ‚Π²Π°: + +– Π’Ρ‹ – атСисты?! + +– Π”Π°, ΠΌΡ‹ – атСисты, – ΡƒΠ»Ρ‹Π±Π°ΡΡΡŒ, ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, Π° Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ€Π°ΡΡΠ΅Ρ€Π΄ΠΈΠ²ΡˆΠΈΡΡŒ: Β«Π’ΠΎΡ‚ прицСпился, Π·Π°Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΉ Π³ΡƒΡΡŒ!Β» + +– ΠžΡ…, какая ΠΏΡ€Π΅Π»Π΅ΡΡ‚ΡŒ! – вскричал ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ иностранСц ΠΈ Π·Π°Π²Π΅Ρ€Ρ‚Π΅Π» Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ, глядя Ρ‚ΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ, Ρ‚ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. + +– Π’ нашСй странС Π°Ρ‚Π΅ΠΈΠ·ΠΌ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ удивляСт, – дипломатичСски Π²Π΅ΠΆΠ»ΠΈΠ²ΠΎ сказал Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, – Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ нашСго насСлСния ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Π΄Π°Π²Π½ΠΎ пСрСстало Π²Π΅Ρ€ΠΈΡ‚ΡŒ сказкам ΠΎ Π±ΠΎΠ³Π΅. + +Π’ΡƒΡ‚ иностранСц ΠΎΡ‚ΠΊΠΎΠ»ΠΎΠ» Ρ‚Π°ΠΊΡƒΡŽ ΡˆΡ‚ΡƒΠΊΡƒ: встал ΠΈ ΠΏΠΎΠΆΠ°Π» ΠΈΠ·ΡƒΠΌΠ»Π΅Π½Π½ΠΎΠΌΡƒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρƒ Ρ€ΡƒΠΊΡƒ, произнСся ΠΏΡ€ΠΈ этом слова: + +– ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ вас ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ ΠΎΡ‚ всСй Π΄ΡƒΡˆΠΈ! + +– Π—Π° Ρ‡Ρ‚ΠΎ это Π²Ρ‹ Π΅Π³ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚Π΅? – Π·Π°ΠΌΠΎΡ€Π³Π°Π², освСдомился Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ. + +– Π—Π° ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎΠ΅ свСдСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠ½Π΅, ΠΊΠ°ΠΊ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΡƒ, Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ интСрСсно, – ΠΌΠ½ΠΎΠ³ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ подняв ΠΏΠ°Π»Π΅Ρ†, пояснил Π·Π°Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΉ Ρ‡ΡƒΠ΄Π°ΠΊ. + +Π’Π°ΠΆΠ½ΠΎΠ΅ свСдСниС, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π»ΠΎ Π½Π° ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ° сильноС Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ испуганно ΠΎΠ±Π²Π΅Π» Π³Π»Π°Π·Π°ΠΌΠΈ Π΄ΠΎΠΌΠ°, ΠΊΠ°ΠΊ Π±Ρ‹ опасаясь Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎ атСисту. + +«НСт, ΠΎΠ½ Π½Π΅ Π°Π½Π³Π»ΠΈΡ‡Π°Π½ΠΈΠ½...Β» – ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, Π° Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»: Β«Π“Π΄Π΅ это ΠΎΠ½ Ρ‚Π°ΠΊ наловчился Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΠΎ-русски, Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ интСрСсно!Β» – ΠΈ ΠΎΠΏΡΡ‚ΡŒ нахмурился. + +– Но, ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ вас ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ, – послС Ρ‚Ρ€Π΅Π²ΠΎΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄ΡƒΠΌΡŒΡ спросил Π·Π°Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΉ Π³ΠΎΡΡ‚ΡŒ, – ΠΊΠ°ΠΊ ΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ с Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°ΠΌΠΈ бытия боТия, ΠΊΠΎΠΈΡ…, ΠΊΠ°ΠΊ извСстно, сущСствуСт Ρ€ΠΎΠ²Π½ΠΎ ΠΏΡΡ‚ΡŒ? + +– Π£Π²Ρ‹! – с соТалСниСм ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, – Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· этих Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π² Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ стоит, ΠΈ чСловСчСство Π΄Π°Π²Π½ΠΎ сдало ΠΈΡ… Π² Π°Ρ€Ρ…ΠΈΠ². Π’Π΅Π΄ΡŒ ΡΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² области Ρ€Π°Π·ΡƒΠΌΠ° Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° сущСствования Π±ΠΎΠ³Π° Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. + +– Π‘Ρ€Π°Π²ΠΎ! – вскричал иностранСц, – Π±Ρ€Π°Π²ΠΎ! Π’Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ»ΠΈ ΠΌΡ‹ΡΠ»ΡŒ бСспокойного старика Π˜ΠΌΠΌΠ°Π½ΡƒΠΈΠ»Π° ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ. Но Π²ΠΎΡ‚ ΠΊΡƒΡ€ΡŒΠ΅Π·: ΠΎΠ½ начисто Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΠ» всС ΠΏΡΡ‚ΡŒ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π², Π° Π·Π°Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π±Ρ‹ Π² Π½Π°ΡΠΌΠ΅ΡˆΠΊΡƒ Π½Π°Π΄ самим собою, соорудил собствСнноС ΡˆΠ΅ΡΡ‚ΠΎΠ΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ! + +– Π”ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠšΠ°Π½Ρ‚Π°, – Ρ‚ΠΎΠ½ΠΊΠΎ ΡƒΠ»Ρ‹Π±Π½ΡƒΠ²ΡˆΠΈΡΡŒ, Π²ΠΎΠ·Ρ€Π°Π·ΠΈΠ» ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, – Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. И Π½Π΅Π΄Π°Ρ€ΠΎΠΌ Π¨ΠΈΠ»Π»Π΅Ρ€ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Ρ‡Ρ‚ΠΎ кантовскиС рассуТдСния ΠΏΠΎ этому вопросу ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π±ΠΎΠ², Π° Штраус просто смСялся Π½Π°Π΄ этим Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ. + +Π‘Π΅Ρ€Π»ΠΈΠΎΠ· Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Π° сам Π² это врСмя Π΄ΡƒΠΌΠ°Π»: «Но, всС-Ρ‚Π°ΠΊΠΈ, ΠΊΡ‚ΠΎ ΠΆΠ΅ ΠΎΠ½ Ρ‚Π°ΠΊΠΎΠΉ? И ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΏΠΎ-русски?Β» + +– Π’Π·ΡΡ‚ΡŒ Π±Ρ‹ этого ΠšΠ°Π½Ρ‚Π°, Π΄Π° Π·Π° Ρ‚Π°ΠΊΠΈΠ΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° Π³ΠΎΠ΄Π° Π½Π° Ρ‚Ρ€ΠΈ Π² Π‘ΠΎΠ»ΠΎΠ²ΠΊΠΈ! – ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ Π±ΡƒΡ…Π½ΡƒΠ» Иван НиколаСвич. + +– Иван! – ΡΠΊΠΎΠ½Ρ„ΡƒΠ·ΠΈΠ²ΡˆΠΈΡΡŒ, ΡˆΠ΅ΠΏΠ½ΡƒΠ» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·. + +Но ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠšΠ°Π½Ρ‚Π° Π² Π‘ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ ΠΏΠΎΡ€Π°Π·ΠΈΠ»ΠΎ иностранца, Π½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ Π² восторг. + +– ИмСнно, ΠΈΠΌΠ΅Π½Π½ΠΎ, – Π·Π°ΠΊΡ€ΠΈΡ‡Π°Π» ΠΎΠ½, ΠΈ Π»Π΅Π²Ρ‹ΠΉ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ Π³Π»Π°Π· Π΅Π³ΠΎ, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊ Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Ρƒ, засвСркал, – Π΅ΠΌΡƒ Ρ‚Π°ΠΌ самоС мСсто! Π’Π΅Π΄ΡŒ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» я Π΅ΠΌΡƒ Ρ‚ΠΎΠ³Π΄Π° Π·Π° Π·Π°Π²Ρ‚Ρ€Π°ΠΊΠΎΠΌ: Β«Π’Ρ‹, профСссор, воля ваша, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ нСскладноС ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ! Оно, ΠΌΠΎΠΆΠ΅Ρ‚, ΠΈ ΡƒΠΌΠ½ΠΎ, Π½ΠΎ больно нСпонятно. Над Π²Π°ΠΌΠΈ ΠΏΠΎΡ‚Π΅ΡˆΠ°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄ΡƒΡ‚Β». + +Π‘Π΅Ρ€Π»ΠΈΠΎΠ· Π²Ρ‹ΠΏΡƒΡ‡ΠΈΠ» Π³Π»Π°Π·Π°. Β«Π—Π° Π·Π°Π²Ρ‚Ρ€Π°ΠΊΠΎΠΌ... ΠšΠ°Π½Ρ‚Ρƒ?.. Π§Ρ‚ΠΎ это ΠΎΠ½ ΠΏΠ»Π΅Ρ‚Π΅Ρ‚?Β» – ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» ΠΎΠ½. + +– Но, – ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» ΠΈΠ½ΠΎΠ·Π΅ΠΌΠ΅Ρ†, Π½Π΅ ΡΠΌΡƒΡ‰Π°ΡΡΡŒ ΠΈΠ·ΡƒΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Π° ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ поэту, – ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π‘ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡƒΠΆΠ΅ с лишком сто Π»Π΅Ρ‚ ΠΏΡ€Π΅Π±Ρ‹Π²Π°Π΅Ρ‚ Π² мСстах Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π΄Π°Π»Π΅Π½Π½Ρ‹Ρ…, Ρ‡Π΅ΠΌ Π‘ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π΅Π³ΠΎ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π½ΠΈΠΊΠΎΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ нСльзя, ΡƒΠ²Π΅Ρ€ΡΡŽ вас! + +– А Таль! – отозвался Π·Π°Π΄ΠΈΡ€Π°-поэт. + +– И ΠΌΠ½Π΅ Таль! – ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» нСизвСстный, свСркая Π³Π»Π°Π·ΠΎΠΌ, ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»: – Но Π²ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠΉ вопрос мСня бСспокоит: Π΅ΠΆΠ΅Π»ΠΈ Π±ΠΎΠ³Π° Π½Π΅Ρ‚, Ρ‚ΠΎ, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ, ΠΊΡ‚ΠΎ ΠΆΠ΅ управляСт Тизнью чСловСчСской ΠΈ всСм Π²ΠΎΠΎΠ±Ρ‰Π΅ распорядком Π½Π° Π·Π΅ΠΌΠ»Π΅? + +– Π‘Π°ΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈ управляСт, – поспСшил сСрдито ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ Π½Π° этот, ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒΡΡ, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ясный вопрос. + +– Π’ΠΈΠ½ΠΎΠ²Π°Ρ‚, – мягко отозвался нСизвСстный, – для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ-Π½ΠΈΠΊΠ°ΠΊ, ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Ρ…ΠΎΡ‚ΡŒ сколько-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹ΠΉ срок. ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΆΠ΅ вас ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Ссли ΠΎΠ½ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ лишСн возмоТности ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠ»Π°Π½ хотя Π±Ρ‹ Π½Π° смСхотворно ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ срок, Π½Ρƒ, Π»Π΅Ρ‚, скаТСм, Π² тысячу, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€ΡƒΡ‡Π°Ρ‚ΡŒΡΡ Π΄Π°ΠΆΠ΅ Π·Π° свой собствСнный Π·Π°Π²Ρ‚Ρ€Π°ΡˆΠ½ΠΈΠΉ дСнь? И, Π² самом Π΄Π΅Π»Π΅, – Ρ‚ΡƒΡ‚ нСизвСстный повСрнулся ΠΊ Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Ρƒ, – Π²ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, Ρ€Π°ΡΠΏΠΎΡ€ΡΠΆΠ°Ρ‚ΡŒΡΡ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΈ собою, Π²ΠΎΠΎΠ±Ρ‰Π΅, Ρ‚Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΎ вкус, ΠΈ Π²Π΄Ρ€ΡƒΠ³ Ρƒ вас... ΠΊΡ…Π΅... ΠΊΡ…Π΅... саркома Π»Π΅Π³ΠΊΠΎΠ³ΠΎ... – Ρ‚ΡƒΡ‚ иностранСц сладко усмСхнулся, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΌΡ‹ΡΠ»ΡŒ ΠΎ саркомС Π»Π΅Π³ΠΊΠΎΠ³ΠΎ доставила Π΅ΠΌΡƒ ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅, – Π΄Π°, саркома, – ΠΆΠΌΡƒΡ€ΡΡΡŒ, ΠΊΠ°ΠΊ ΠΊΠΎΡ‚, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ» ΠΎΠ½ Π·Π²ΡƒΡ‡Π½ΠΎΠ΅ слово, – ΠΈ Π²ΠΎΡ‚ вашС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ! ΠΠΈΡ‡ΡŒΡ ΡΡƒΠ΄ΡŒΠ±Π°, ΠΊΡ€ΠΎΠΌΠ΅ своСй собствСнной, вас Π±ΠΎΠ»Π΅Π΅ Π½Π΅ интСрСсуСт. Π ΠΎΠ΄Π½Ρ‹Π΅ Π²Π°ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π»Π³Π°Ρ‚ΡŒ, Π²Ρ‹, чуя Π½Π΅Π»Π°Π΄Π½ΠΎΠ΅, Π±Ρ€ΠΎΡΠ°Π΅Ρ‚Π΅ΡΡŒ ΠΊ ΡƒΡ‡Π΅Π½Ρ‹ΠΌ Π²Ρ€Π°Ρ‡Π°ΠΌ, Π·Π°Ρ‚Π΅ΠΌ ΠΊ ΡˆΠ°Ρ€Π»Π°Ρ‚Π°Π½Π°ΠΌ, Π° Π±Ρ‹Π²Π°Π΅Ρ‚, ΠΈ ΠΊ Π³Π°Π΄Π°Π»ΠΊΠ°ΠΌ. Как ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ΅, Ρ‚Π°ΠΊ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ – ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ бСссмыслСнно, Π²Ρ‹ сами ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅. И всС это кончаСтся трагичСски: Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ»Π°Π³Π°Π», Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ управляСт, оказываСтся Π²Π΄Ρ€ΡƒΠ³ Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎ Π² дСрСвянном ящикС, ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠ΅, понимая, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΠΊΡƒ ΠΎΡ‚ Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ Π½Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ, ΡΠΆΠΈΠ³Π°ΡŽΡ‚ Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ‡ΠΈ. А Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΈ Π΅Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅: Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ собСрСтся ΡΡŠΠ΅Π·Π΄ΠΈΡ‚ΡŒ Π² Кисловодск, – Ρ‚ΡƒΡ‚ иностранСц прищурился Π½Π° Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Π°, – пустяковоС, казалось Π±Ρ‹, Π΄Π΅Π»ΠΎ, Π½ΠΎ ΠΈ этого ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ нСизвСстно ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π΄Ρ€ΡƒΠ³ Π²ΠΎΠ·ΡŒΠΌΠ΅Ρ‚ – ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠ·Π½Π΅Ρ‚ΡΡ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ ΠΏΠΎΠ΄ Ρ‚Ρ€Π°ΠΌΠ²Π°ΠΉ! НСуТСли Π²Ρ‹ скаТСтС, Ρ‡Ρ‚ΠΎ это ΠΎΠ½ сам собою ΡƒΠΏΡ€Π°Π²ΠΈΠ» Ρ‚Π°ΠΊ? НС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ Π»ΠΈ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ управился с Π½ΠΈΠΌ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ совсСм Π΄Ρ€ΡƒΠ³ΠΎΠΉ? – ΠΈ здСсь Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΠ΅Ρ† рассмСялся странным смСшком. + +Π‘Π΅Ρ€Π»ΠΈΠΎΠ· с Π²Π΅Π»ΠΈΠΊΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΡΠ»ΡƒΡˆΠ°Π» нСприятный рассказ ΠΏΡ€ΠΎ саркому ΠΈ Ρ‚Ρ€Π°ΠΌΠ²Π°ΠΉ, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ‚Ρ€Π΅Π²ΠΎΠΆΠ½Ρ‹Π΅ мысли Π½Π°Ρ‡Π°Π»ΠΈ ΠΌΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. «Он Π½Π΅ иностранСц! Он Π½Π΅ иностранСц! – Π΄ΡƒΠΌΠ°Π» ΠΎΠ½, – ΠΎΠ½ прСстранный ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚... Но ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅, ΠΊΡ‚ΠΎ ΠΆΠ΅ ΠΎΠ½ Ρ‚Π°ΠΊΠΎΠΉ?Β» + +– Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΊΡƒΡ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ я Π²ΠΈΠΆΡƒ? – Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ обратился ΠΊ Π‘Π΅Π·Π΄ΠΎΠΌΠ½ΠΎΠΌΡƒ нСизвСстный, – Π²Ρ‹ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅? + +– А Ρƒ вас Ρ€Π°Π·Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ Π»ΠΈ, Π΅ΡΡ‚ΡŒ? – ΠΌΡ€Π°Ρ‡Π½ΠΎ спросил поэт, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ папиросы ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈΡΡŒ. + +– КакиС ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅? – ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ» нСизвСстный. + +– Ну, Β«ΠΠ°ΡˆΡƒ ΠΌΠ°Ρ€ΠΊΡƒΒ», – Π·Π»ΠΎΠ±Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ. + +НСзнакомСц Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΠ» ΠΈΠ· ΠΊΠ°Ρ€ΠΌΠ°Π½Π° портсигар ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π΅Π³ΠΎ Π‘Π΅Π·Π΄ΠΎΠΌΠ½ΠΎΠΌΡƒ: + +– «Наша ΠΌΠ°Ρ€ΠΊΠ°Β». + +И Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈ поэта Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ€Π°Π·ΠΈΠ»ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ нашлась Π² портсигарС ΠΈΠΌΠ΅Π½Π½ΠΎ «Наша ΠΌΠ°Ρ€ΠΊΠ°Β», сколько сам портсигар. Он Π±Ρ‹Π» Π³Ρ€ΠΎΠΌΠ°Π΄Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², Ρ‡Π΅Ρ€Π²ΠΎΠ½Π½ΠΎΠ³ΠΎ Π·ΠΎΠ»ΠΎΡ‚Π°, ΠΈ Π½Π° ΠΊΡ€Ρ‹ΡˆΠΊΠ΅ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π½ΠΈΠΈ свСркнул синим ΠΈ Π±Π΅Π»Ρ‹ΠΌ ΠΎΠ³Π½Π΅ΠΌ Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚ΠΎΠ²Ρ‹ΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. + +Π’ΡƒΡ‚ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»ΠΈ Ρ€Π°Π·Π½ΠΎ. Π‘Π΅Ρ€Π»ΠΈΠΎΠ·: «НСт, иностранСц!Β», Π° Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ: Β«Π’ΠΎΡ‚ Ρ‡Π΅Ρ€Ρ‚ Π΅Π³ΠΎ возьми! А?Β» + +ΠŸΠΎΡΡ‚ ΠΈ Π²Π»Π°Π΄Π΅Π»Π΅Ρ† портсигара Π·Π°ΠΊΡƒΡ€ΠΈΠ»ΠΈ, Π° нСкурящий Π‘Π΅Ρ€Π»ΠΈΠΎΠ· отказался. + +«Надо Π±ΡƒΠ΄Π΅Ρ‚ Π΅ΠΌΡƒ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ, – Ρ€Π΅ΡˆΠΈΠ» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, – Π΄Π°, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ смСртСн, Π½ΠΈΠΊΡ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ² этого ΠΈ Π½Π΅ спорит. А Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ...Β» + +Однако ΠΎΠ½ Π½Π΅ успСл Π²Ρ‹Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ этих слов, ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» иностранСц: + +– Π”Π°, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ смСртСн, Π½ΠΎ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΅Ρ‰Π΅ ΠΏΠΎΠ»Π±Π΅Π΄Ρ‹. ΠŸΠ»ΠΎΡ…ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ смСртСн, Π²ΠΎΡ‚ Π² Ρ‡Π΅ΠΌ фокус! И Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² сСгодняшний Π²Π΅Ρ‡Π΅Ρ€. + +«Какая-Ρ‚ΠΎ нСлСпая постановка вопроса...Β» – помыслил Π‘Π΅Ρ€Π»ΠΈΠΎΠ· ΠΈ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΠ»: + +– Ну, здСсь ΡƒΠΆ Π΅ΡΡ‚ΡŒ ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅. БСгодняшний Π²Π΅Ρ‡Π΅Ρ€ ΠΌΠ½Π΅ извСстСн Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ. Π‘Π°ΠΌΠΎ собой разумССтся, Ρ‡Ρ‚ΠΎ, Ссли Π½Π° Π‘Ρ€ΠΎΠ½Π½ΠΎΠΉ ΠΌΠ½Π΅ свалится Π½Π° Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΊΠΈΡ€ΠΏΠΈΡ‡... + +– ΠšΠΈΡ€ΠΏΠΈΡ‡ Π½ΠΈ с Ρ‚ΠΎΠ³ΠΎ Π½ΠΈ с сСго, – Π²Π½ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΈΠ» нСизвСстный, – Π½ΠΈΠΊΠΎΠΌΡƒ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π° Π³ΠΎΠ»ΠΎΠ²Ρƒ Π½Π΅ свалится. Π’ частности ΠΆΠ΅, ΡƒΠ²Π΅Ρ€ΡΡŽ вас, Π²Π°ΠΌ ΠΎΠ½ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ ΡƒΠ³Ρ€ΠΎΠΆΠ°Π΅Ρ‚. Π’Ρ‹ ΡƒΠΌΡ€Π΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡΠΌΠ΅Ρ€Ρ‚ΡŒΡŽ. + +– ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ? – с ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ СстСствСнной ΠΈΡ€ΠΎΠ½ΠΈΠ΅ΠΉ освСдомился Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, вовлСкаясь Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π»Π΅ΠΏΡ‹ΠΉ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€, – ΠΈ скаТСтС ΠΌΠ½Π΅? + +– ΠžΡ…ΠΎΡ‚Π½ΠΎ, – отозвался Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΠ΅Ρ†. Он смСрил Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Π° взглядом, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ собирался ΡΡˆΠΈΡ‚ΡŒ Π΅ΠΌΡƒ ΠΊΠΎΡΡ‚ΡŽΠΌ, сквозь Π·ΡƒΠ±Ρ‹ ΠΏΡ€ΠΎΠ±ΠΎΡ€ΠΌΠΎΡ‚Π°Π» Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅: Β«Π Π°Π·, Π΄Π²Π°... ΠœΠ΅Ρ€ΠΊΡƒΡ€ΠΈΠΉ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠΌΠ΅... Π»ΡƒΠ½Π° ΡƒΡˆΠ»Π°... ΡˆΠ΅ΡΡ‚ΡŒ – Π½Π΅ΡΡ‡Π°ΡΡ‚ΡŒΠ΅... Π²Π΅Ρ‡Π΅Ρ€ – сСмь...Β» – ΠΈ Π³Ρ€ΠΎΠΌΠΊΠΎ ΠΈ радостно объявил: – Π’Π°ΠΌ ΠΎΡ‚Ρ€Π΅ΠΆΡƒΡ‚ Π³ΠΎΠ»ΠΎΠ²Ρƒ! + +Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ Π΄ΠΈΠΊΠΎ ΠΈ Π·Π»ΠΎΠ±Π½ΠΎ Π²Ρ‹Ρ‚Π°Ρ€Π°Ρ‰ΠΈΠ» Π³Π»Π°Π·Π° Π½Π° развязного нСизвСстного, Π° Π‘Π΅Ρ€Π»ΠΈΠΎΠ· спросил, ΠΊΡ€ΠΈΠ²ΠΎ ΡƒΡΠΌΠ΅Ρ…Π½ΡƒΠ²ΡˆΠΈΡΡŒ: + +– А ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ? Π’Ρ€Π°Π³ΠΈ? Π˜Π½Ρ‚Π΅Ρ€Π²Π΅Π½Ρ‚Ρ‹? + +– НСт, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» собСсСдник, – русская ΠΆΠ΅Π½Ρ‰ΠΈΠ½Π°, комсомолка. + +– Π“ΠΌ... – ΠΏΡ€ΠΎΠΌΡ‹Ρ‡Π°Π» Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΉ ΡˆΡƒΡ‚ΠΎΡ‡ΠΊΠΎΠΉ нСизвСстного Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, – Π½Ρƒ, это, ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅, маловСроятно. + +– ΠŸΡ€ΠΎΡˆΡƒ ΠΈ мСня ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚ΡŒ, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» иностранСц, – Π½ΠΎ это Ρ‚Π°ΠΊ. Π”Π°, ΠΌΠ½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ вас, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ сСгодня Π²Π΅Ρ‡Π΅Ρ€ΠΎΠΌ, Ссли это Π½Π΅ сСкрСт? + +– Π‘Π΅ΠΊΡ€Π΅Ρ‚Π° Π½Π΅Ρ‚. БСйчас я Π·Π°ΠΉΠ΄Ρƒ ΠΊ сСбС Π½Π° Π‘Π°Π΄ΠΎΠ²ΡƒΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π² Π΄Π΅ΡΡΡ‚ΡŒ часов Π²Π΅Ρ‡Π΅Ρ€Π° Π² ΠœΠΠ‘Π‘ΠžΠ›Π˜Π’Π΅ состоится засСданиС, ΠΈ я Π±ΡƒΠ΄Ρƒ Π½Π° Π½Π΅ΠΌ ΠΏΡ€Π΅Π΄ΡΠ΅Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. + +– НСт, этого Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚, – Ρ‚Π²Π΅Ρ€Π΄ΠΎ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΠ» иностранСц. + +– Π­Ρ‚ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ? + +– ΠŸΠΎΡ‚ΠΎΠΌΡƒ, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» иностранСц ΠΈ ΠΏΡ€ΠΈΡ‰ΡƒΡ€Π΅Π½Π½Ρ‹ΠΌΠΈ Π³Π»Π°Π·Π°ΠΌΠΈ поглядСл Π² Π½Π΅Π±ΠΎ, Π³Π΄Π΅, прСдчувствуя Π²Π΅Ρ‡Π΅Ρ€Π½ΡŽΡŽ ΠΏΡ€ΠΎΡ…Π»Π°Π΄Ρƒ, Π±Π΅ΡΡˆΡƒΠΌΠ½ΠΎ Ρ‡Π΅Ρ€Ρ‚ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π½Ρ‹Π΅ ΠΏΡ‚ΠΈΡ†Ρ‹, – Ρ‡Ρ‚ΠΎ ΠΠ½Π½ΡƒΡˆΠΊΠ° ΡƒΠΆΠ΅ ΠΊΡƒΠΏΠΈΠ»Π° подсолнСчноС масло, ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡƒΠΏΠΈΠ»Π°, Π½ΠΎ Π΄Π°ΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΠ»Π°. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ засСданиС Π½Π΅ состоится. + +Π’ΡƒΡ‚, ΠΊΠ°ΠΊ Π²ΠΏΠΎΠ»Π½Π΅ понятно, ΠΏΠΎΠ΄ Π»ΠΈΠΏΠ°ΠΌΠΈ наступило ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅. + +– ΠŸΡ€ΠΎΡΡ‚ΠΈΡ‚Π΅, – послС ΠΏΠ°ΡƒΠ·Ρ‹ Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, поглядывая Π½Π° ΠΌΠ΅Π»ΡŽΡ‰Π΅Π³ΠΎ Ρ‡Π΅ΠΏΡƒΡ…Ρƒ иностранца, – ΠΏΡ€ΠΈ Ρ‡Π΅ΠΌ здСсь подсолнСчноС масло... ΠΈ какая ΠΠ½Π½ΡƒΡˆΠΊΠ°? + +– ΠŸΠΎΠ΄ΡΠΎΠ»Π½Π΅Ρ‡Π½ΠΎΠ΅ масло здСсь Π²ΠΎΡ‚ ΠΏΡ€ΠΈ Ρ‡Π΅ΠΌ, – Π²Π΄Ρ€ΡƒΠ³ Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ€Π΅ΡˆΠΈΠ² ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π½Π΅Π·Π²Π°Π½Π½ΠΎΠΌΡƒ собСсСднику Π²ΠΎΠΉΠ½Ρƒ, – Π²Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ, Π³Ρ€Π°ΠΆΠ΄Π°Π½ΠΈΠ½, Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Π»Π΅Ρ‡Π΅Π±Π½ΠΈΡ†Π΅ для Π΄ΡƒΡˆΠ΅Π²Π½ΠΎΠ±ΠΎΠ»ΡŒΠ½Ρ‹Ρ…? + +– Иван!.. – Ρ‚ΠΈΡ…ΠΎ воскликнул ΠœΠΈΡ…Π°ΠΈΠ» АлСксандрович. + +Но иностранСц Π½ΠΈΡ‡ΡƒΡ‚ΡŒ Π½Π΅ обидСлся ΠΈ прСвСсСло рассмСялся. + +– Π‘Ρ‹Π²Π°Π», Π±Ρ‹Π²Π°Π» ΠΈ Π½Π΅ Ρ€Π°Π·! – вскричал ΠΎΠ½, смСясь, Π½ΠΎ Π½Π΅ сводя Π½Π΅ΡΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ Π³Π»Π°Π·Π° с поэта, – Π³Π΄Π΅ я Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ Π±Ρ‹Π²Π°Π»! Π–Π°Π»ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ я Π½Π΅ удосуТился ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ профСссора, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡˆΠΈΠ·ΠΎΡ„Ρ€Π΅Π½ΠΈΡ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆ сами ΡƒΠ·Π½Π°ΠΉΡ‚Π΅ это Ρƒ Π½Π΅Π³ΠΎ, Иван НиколаСвич! + +– ΠžΡ‚ΠΊΡƒΠ΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ мСня Π·ΠΎΠ²ΡƒΡ‚? + +– ΠŸΠΎΠΌΠΈΠ»ΡƒΠΉΡ‚Π΅, Иван НиколаСвич, ΠΊΡ‚ΠΎ ΠΆΠ΅ вас Π½Π΅ Π·Π½Π°Π΅Ρ‚? – здСсь иностранСц Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΠ» ΠΈΠ· ΠΊΠ°Ρ€ΠΌΠ°Π½Π° Π²Ρ‡Π΅Ρ€Π°ΡˆΠ½ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ Β«Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π½ΠΎΠΉ Π³Π°Π·Π΅Ρ‚Ρ‹Β», ΠΈ Иван НиколаСвич ΡƒΠ²ΠΈΠ΄Π΅Π» Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΆΠ΅ страницС своС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π° ΠΏΠΎΠ΄ Π½ΠΈΠΌ свои собствСнныС стихи. Но Π²Ρ‡Π΅Ρ€Π° Π΅Ρ‰Π΅ Ρ€Π°Π΄ΠΎΠ²Π°Π²ΡˆΠ΅Π΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ славы ΠΈ популярности Π½Π° этот Ρ€Π°Π· Π½ΠΈΡ‡ΡƒΡ‚ΡŒ Π½Π΅ ΠΎΠ±Ρ€Π°Π΄ΠΎΠ²Π°Π»ΠΎ поэта. + +– Π― извиняюсь, – сказал ΠΎΠ½, ΠΈ Π»ΠΈΡ†ΠΎ Π΅Π³ΠΎ ΠΏΠΎΡ‚Π΅ΠΌΠ½Π΅Π»ΠΎ, – Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΡƒΡ‚ΠΊΡƒ? Π― Ρ…ΠΎΡ‡Ρƒ Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰Ρƒ ΠΏΠ°Ρ€Ρƒ слов ΡΠΊΠ°Π·Π°Ρ‚ΡŒ. + +– О, с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ! – воскликнул нСизвСстный, – здСсь Ρ‚Π°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄ Π»ΠΈΠΏΠ°ΠΌΠΈ, Π° я, кстати, Π½ΠΈΠΊΡƒΠ΄Π° ΠΈ Π½Π΅ ΡΠΏΠ΅ΡˆΡƒ. + +– Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ, Миша, – Π·Π°ΡˆΠ΅ΠΏΡ‚Π°Π» поэт, ΠΎΡ‚Ρ‚Π°Ρ‰ΠΈΠ² Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Π° Π² сторону, – ΠΎΠ½ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π΅ интурист, Π° шпион. Π­Ρ‚ΠΎ русский эмигрант, ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Π²ΡˆΠΈΠΉΡΡ ΠΊ Π½Π°ΠΌ. Π‘ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΠΉ Ρƒ Π½Π΅Π³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π° Ρ‚ΠΎ ΡƒΠΉΠ΄Π΅Ρ‚... + +– Π’Ρ‹ Π΄ΡƒΠΌΠ°Π΅ΡˆΡŒ? – встрСвоТСнно ΡˆΠ΅ΠΏΠ½ΡƒΠ» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, Π° сам ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»: «А вСдь ΠΎΠ½ ΠΏΡ€Π°Π²!Β» + +– Π£ΠΆ Ρ‚Ρ‹ ΠΌΠ½Π΅ Π²Π΅Ρ€ΡŒ, – засипСл Π΅ΠΌΡƒ Π² ΡƒΡ…ΠΎ поэт, – ΠΎΠ½ Π΄ΡƒΡ€Π°Ρ‡ΠΊΠΎΠΌ прикидываСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ. Π’Ρ‹ ΡΠ»Ρ‹ΡˆΠΈΡˆΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎ-русски Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, – поэт Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΈ косился, слСдя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ нСизвСстный Π½Π΅ ΡƒΠ΄Ρ€Π°Π», – ΠΈΠ΄Π΅ΠΌ, Π·Π°Π΄Π΅Ρ€ΠΆΠΈΠΌ Π΅Π³ΠΎ, Π° Ρ‚ΠΎ ΡƒΠΉΠ΄Π΅Ρ‚... + +И поэт Π·Π° Ρ€ΡƒΠΊΡƒ потянул Π‘Π΅Ρ€Π»ΠΈΠΎΠ·Π° ΠΊ скамСйкС. + +НСзнакомСц Π½Π΅ сидСл, Π° стоял Π²ΠΎΠ·Π»Π΅ Π½Π΅Π΅, Π΄Π΅Ρ€ΠΆΠ° Π² Ρ€ΡƒΠΊΠ°Ρ… ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΊΠ½ΠΈΠΆΠ΅Ρ‡ΠΊΡƒ Π² Ρ‚Π΅ΠΌΠ½ΠΎ-сСром ΠΏΠ΅Ρ€Π΅ΠΏΠ»Π΅Ρ‚Π΅, ΠΏΠ»ΠΎΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Π±ΡƒΠΌΠ°Π³ΠΈ ΠΈ Π²ΠΈΠ·ΠΈΡ‚Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ. + +– Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅ мСня, Ρ‡Ρ‚ΠΎ я Π² ΠΏΡ‹Π»Ρƒ нашСго спора Π·Π°Π±Ρ‹Π» ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбя Π²Π°ΠΌ. Π’ΠΎΡ‚ моя ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°, паспорт ΠΈ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ΅Ρ…Π°Ρ‚ΡŒ Π² ΠœΠΎΡΠΊΠ²Ρƒ для ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΠΈ, – вСско ΠΏΡ€ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ» нСизвСстный, ΠΏΡ€ΠΎΠ½ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ глядя Π½Π° ΠΎΠ±ΠΎΠΈΡ… Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². + +Π’Π΅ ΡΠΊΠΎΠ½Ρ„ΡƒΠ·ΠΈΠ»ΠΈΡΡŒ. Β«Π§Π΅Ρ€Ρ‚, всС ΡΠ»Ρ‹ΡˆΠ°Π»,Β» – ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» Π‘Π΅Ρ€Π»ΠΈΠΎΠ· ΠΈ Π²Π΅ΠΆΠ»ΠΈΠ²Ρ‹ΠΌ ТСстом ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅Ρ‚ надобности. Пока иностранСц совал ΠΈΡ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρƒ, поэт успСл Ρ€Π°Π·Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½ΠΎΠ΅ иностранными Π±ΡƒΠΊΠ²Π°ΠΌΠΈ слово «профСссор» ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ – Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Β«Π’Β». + + +– ΠžΡ‡Π΅Π½ΡŒ приятно, – Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ смущСнно Π±ΠΎΡ€ΠΌΠΎΡ‚Π°Π» Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΈ иностранСц спрятал Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΊΠ°Ρ€ΠΌΠ°Π½. + +ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±Ρ‹Π»ΠΈ восстановлСны, ΠΈ всС Ρ‚Ρ€ΠΎΠ΅ снова сСли Π½Π° скамью. + +– Π’Ρ‹ Π² качСствС ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚Π° ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½Ρ‹ ΠΊ Π½Π°ΠΌ, профСссор? – спросил Π‘Π΅Ρ€Π»ΠΈΠΎΠ·. + +– Π”Π°, ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚ΠΎΠΌ. + +– Π’Ρ‹ – Π½Π΅ΠΌΠ΅Ρ†? – освСдомился Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ. + +– Π―-Ρ‚ΠΎ?.. – ΠŸΠ΅Ρ€Π΅ΡΠΏΡ€ΠΎΡΠΈΠ» профСссор ΠΈ Π²Π΄Ρ€ΡƒΠ³ задумался. – Π”Π°, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, Π½Π΅ΠΌΠ΅Ρ†... – сказал ΠΎΠ½. + +– Π’Ρ‹ ΠΏΠΎ-русски Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅, – Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» Π‘Π΅Π·Π΄ΠΎΠΌΠ½Ρ‹ΠΉ. + +– О, я Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠΎΠ»ΠΈΠ³Π»ΠΎΡ‚ ΠΈ знаю ΠΎΡ‡Π΅Π½ΡŒ большоС количСство языков, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» профСссор. + +– А Ρƒ вас какая ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ? – освСдомился Π‘Π΅Ρ€Π»ΠΈΠΎΠ·. + +– Π― – спСциалист ΠΏΠΎ Ρ‡Π΅Ρ€Π½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ. + +«На Ρ‚Π΅Π±Π΅!Β» – стукнуло Π² Π³ΠΎΠ»ΠΎΠ²Π΅ Ρƒ ΠœΠΈΡ…Π°ΠΈΠ»Π° АлСксандровича. + +– И... ΠΈ вас ΠΏΠΎ этой ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ пригласили ΠΊ Π½Π°ΠΌ? – Π·Π°ΠΈΠΊΠ½ΡƒΠ²ΡˆΠΈΡΡŒ спросил ΠΎΠ½. + +– Π”Π°, ΠΏΠΎ этой пригласили, – ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» профСссор ΠΈ пояснил: – Π’ΡƒΡ‚ Π² государствСнной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½Ρ‹Π΅ рукописи Ρ‡Π΅Ρ€Π½ΠΎΠΊΠ½ΠΈΠΆΠ½ΠΈΠΊΠ° Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚Π° Аврилакского, дСсятого Π²Π΅ΠΊΠ°, Ρ‚Π°ΠΊ Π²ΠΎΡ‚ трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я ΠΈΡ… Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π». Π― СдинствСнный Π² ΠΌΠΈΡ€Π΅ спСциалист. + +– А-Π°! Π’Ρ‹ историк? – с большим ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ спросил Π‘Π΅Ρ€Π»ΠΈΠΎΠ·. + +– Π― – историк, – ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» ΡƒΡ‡Π΅Π½Ρ‹ΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π½ΠΈ ΠΊ сСлу Π½ΠΈ ΠΊ Π³ΠΎΡ€ΠΎΠ΄Ρƒ: – БСгодня Π²Π΅Ρ‡Π΅Ρ€ΠΎΠΌ Π½Π° ΠŸΠ°Ρ‚Ρ€ΠΈΠ°Ρ€ΡˆΠΈΡ… ΠΏΡ€ΡƒΠ΄Π°Ρ… Π±ΡƒΠ΄Π΅Ρ‚ интСрСсная история! + +И ΠΎΠΏΡΡ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΠ»ΠΈΡΡŒ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ поэт, Π° профСссор ΠΏΠΎΠΌΠ°Π½ΠΈΠ» ΠΎΠ±ΠΎΠΈΡ… ΠΊ сСбС ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ наклонились ΠΊ Π½Π΅ΠΌΡƒ, ΠΏΡ€ΠΎΡˆΠ΅ΠΏΡ‚Π°Π»: + +– Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π˜ΠΈΡΡƒΡ сущСствовал. + +– Π’ΠΈΠ΄ΠΈΡ‚Π΅ Π»ΠΈ, профСссор, – ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π΅Π½Π½ΠΎ ΡƒΠ»Ρ‹Π±Π½ΡƒΠ²ΡˆΠΈΡΡŒ, отозвался Π‘Π΅Ρ€Π»ΠΈΠΎΠ·, – ΠΌΡ‹ ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌ ваши большиС знания, Π½ΠΎ сами ΠΏΠΎ этому вопросу придСрТиваСмся Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния. + +– А Π½Π΅ Π½Π°Π΄ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ зрСния! – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» странный профСссор, – просто ΠΎΠ½ сущСствовал, ΠΈ большС Π½ΠΈΡ‡Π΅Π³ΠΎ. + +– Но трСбуСтся ΠΆΠ΅ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ... – Π½Π°Ρ‡Π°Π» Π‘Π΅Ρ€Π»ΠΈΠΎΠ·. + +– И Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π² Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π½Π΅ трСбуСтся, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» профСссор ΠΈ Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π½Π΅Π³Ρ€ΠΎΠΌΠΊΠΎ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π΅Π³ΠΎ Π°ΠΊΡ†Π΅Π½Ρ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠΏΠ°Π»: – ВсС просто: Π² Π±Π΅Π»ΠΎΠΌ ΠΏΠ»Π°Ρ‰Π΅... + + + +Π“Π»Π°Π²Π° 2 + +ΠŸΠΎΠ½Ρ‚ΠΈΠΉ ΠŸΠΈΠ»Π°Ρ‚ + +Π’ Π±Π΅Π»ΠΎΠΌ ΠΏΠ»Π°Ρ‰Π΅ с ΠΊΡ€ΠΎΠ²Π°Π²Ρ‹ΠΌ ΠΏΠΎΠ΄Π±ΠΎΠ΅ΠΌ, ΡˆΠ°Ρ€ΠΊΠ°ΡŽΡ‰Π΅ΠΉ кавалСрийской ΠΏΠΎΡ…ΠΎΠ΄ΠΊΠΎΠΉ, Ρ€Π°Π½Π½ΠΈΠΌ ΡƒΡ‚Ρ€ΠΎΠΌ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π½Π°Π΄Ρ†Π°Ρ‚ΠΎΠ³ΠΎ числа вСсСннСго мСсяца нисана Π² ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½Π½Π°Π΄Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΊΡ€Ρ‹Π»ΡŒΡΠΌΠΈ Π΄Π²ΠΎΡ€Ρ†Π° ΠΈΡ€ΠΎΠ΄Π° Π²Π΅Π»ΠΈΠΊΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅Π» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π˜ΡƒΠ΄Π΅ΠΈ ΠŸΠΎΠ½Ρ‚ΠΈΠΉ ΠŸΠΈΠ»Π°Ρ‚. + +Π‘ΠΎΠ»Π΅Π΅ всСго Π½Π° свСтС ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π½Π΅Π½Π°Π²ΠΈΠ΄Π΅Π» Π·Π°ΠΏΠ°Ρ… Ρ€ΠΎΠ·ΠΎΠ²ΠΎΠ³ΠΎ масла, ΠΈ всС Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄Π²Π΅Ρ‰Π°Π»ΠΎ Π½Π΅Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ дСнь, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π·Π°ΠΏΠ°Ρ… этот Π½Π°Ρ‡Π°Π» ΠΏΡ€Π΅ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° с рассвСта. ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Ρƒ казалось, Ρ‡Ρ‚ΠΎ Ρ€ΠΎΠ·ΠΎΠ²Ρ‹ΠΉ Π·Π°ΠΏΠ°Ρ… ΠΈΡΡ‚ΠΎΡ‡Π°ΡŽΡ‚ кипарисы ΠΈ ΠΏΠ°Π»ΡŒΠΌΡ‹ Π² саду, Ρ‡Ρ‚ΠΎ ΠΊ Π·Π°ΠΏΠ°Ρ…Ρƒ ΠΊΠΎΠΆΠΈ ΠΈ конвоя ΠΏΡ€ΠΈΠΌΠ΅ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ проклятая розовая струя. ΠžΡ‚ Ρ„Π»ΠΈΠ³Π΅Π»Π΅ΠΉ Π² Ρ‚Ρ‹Π»Ρƒ Π΄Π²ΠΎΡ€Ρ†Π°, Π³Π΄Π΅ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠ»Π°ΡΡŒ ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠ°Ρ с ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌ пСрвая ΠΊΠΎΠ³ΠΎΡ€Ρ‚Π° Π΄Π²Π΅Π½Π°Π΄Ρ†Π°Ρ‚ΠΎΠ³ΠΎ молниСносного Π»Π΅Π³ΠΈΠΎΠ½Π°, заносило Π΄Ρ‹ΠΌΠΊΠΎΠΌ Π² ΠΊΠΎΠ»ΠΎΠ½Π½Π°Π΄Ρƒ Ρ‡Π΅Ρ€Π΅Π· Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΡƒ сада, ΠΈ ΠΊ Π³ΠΎΡ€ΡŒΠΊΠΎΠ²Π°Ρ‚ΠΎΠΌΡƒ Π΄Ρ‹ΠΌΡƒ, ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠ΅ΠΌΡƒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΡˆΠ΅Π²Π°Ρ€Ρ‹ Π² кСнтуриях Π½Π°Ρ‡Π°Π»ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Π΅Π΄, ΠΏΡ€ΠΈΠΌΠ΅ΡˆΠΈΠ²Π°Π»ΡΡ всС Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΆΠΈΡ€Π½Ρ‹ΠΉ Ρ€ΠΎΠ·ΠΎΠ²Ρ‹ΠΉ Π΄ΡƒΡ…. О Π±ΠΎΠ³ΠΈ, Π±ΠΎΠ³ΠΈ, Π·Π° Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ мСня? + +Β«Π”Π°, Π½Π΅Ρ‚ сомнСний! Π­Ρ‚ΠΎ ΠΎΠ½Π°, ΠΎΠΏΡΡ‚ΡŒ ΠΎΠ½Π°, нСпобСдимая, уТасная болСзнь гСмикрания, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»Π³ΠΎΠ»ΠΎΠ²Ρ‹. ΠžΡ‚ Π½Π΅Π΅ Π½Π΅Ρ‚ срСдств, Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ спасСния. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ Π½Π΅ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉΒ». + +На ΠΌΠΎΠ·Π°ΠΈΡ‡Π½ΠΎΠΌ ΠΏΠΎΠ»Ρƒ Ρƒ Ρ„ΠΎΠ½Ρ‚Π°Π½Π° ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΎ крСсло, ΠΈ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, Π½Π΅ глядя Π½ΠΈ Π½Π° ΠΊΠΎΠ³ΠΎ, сСл Π² Π½Π΅Π³ΠΎ ΠΈ протянул Ρ€ΡƒΠΊΡƒ Π² сторону. + +Π‘Π΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π»ΠΎΠΆΠΈΠ» Π² эту Ρ€ΡƒΠΊΡƒ кусок ΠΏΠ΅Ρ€Π³Π°ΠΌΠ΅Π½Ρ‚Π°. НС ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π²ΡˆΠΈΡΡŒ ΠΎΡ‚ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎΠΉ гримасы, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ искоса, Π±Π΅Π³Π»ΠΎ проглядСл написанноС, Π²Π΅Ρ€Π½ΡƒΠ» ΠΏΠ΅Ρ€Π³Π°ΠΌΠ΅Π½Ρ‚ ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŽ ΠΈ с Ρ‚Ρ€ΡƒΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»: + +– ΠŸΠΎΠ΄ΡΠ»Π΅Π΄ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ· Π“Π°Π»ΠΈΠ»Π΅ΠΈ? К Ρ‚Π΅Ρ‚Ρ€Π°Ρ€Ρ…Ρƒ Π΄Π΅Π»ΠΎ посылали? + +– Π”Π°, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ. + +– Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ½? + +– Он отказался Π΄Π°Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄Π΅Π»Ρƒ ΠΈ смСртный ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€ Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠ» Π½Π° вашС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, – объяснил ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ. + +ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π΄Π΅Ρ€Π½ΡƒΠ» Ρ‰Π΅ΠΊΠΎΠΉ ΠΈ сказал Ρ‚ΠΈΡ…ΠΎ: + +– ΠŸΡ€ΠΈΠ²Π΅Π΄ΠΈΡ‚Π΅ обвиняСмого. + +И сСйчас ΠΆΠ΅ с ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠΈ сада ΠΏΠΎΠ΄ ΠΊΠΎΠ»ΠΎΠ½Π½Ρ‹ Π½Π° Π±Π°Π»ΠΊΠΎΠ½ Π΄Π²ΠΎΠ΅ Π»Π΅Π³ΠΈΠΎΠ½Π΅Ρ€ΠΎΠ² Π²Π²Π΅Π»ΠΈ ΠΈ поставили ΠΏΠ΅Ρ€Π΅Π΄ крСслом ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π»Π΅Ρ‚ Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΠΈ сСми. Π­Ρ‚ΠΎΡ‚ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π±Ρ‹Π» ΠΎΠ΄Π΅Ρ‚ Π² ΡΡ‚Π°Ρ€Π΅Π½ΡŒΠΊΠΈΠΉ ΠΈ Ρ€Π°Π·ΠΎΡ€Π²Π°Π½Π½Ρ‹ΠΉ Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ Ρ…ΠΈΡ‚ΠΎΠ½. Π“ΠΎΠ»ΠΎΠ²Π° Π΅Π³ΠΎ Π±Ρ‹Π»Π° ΠΏΡ€ΠΈΠΊΡ€Ρ‹Ρ‚Π° Π±Π΅Π»ΠΎΠΉ повязкой с Ρ€Π΅ΠΌΠ΅ΡˆΠΊΠΎΠΌ Π²ΠΎΠΊΡ€ΡƒΠ³ Π»Π±Π°, Π° Ρ€ΡƒΠΊΠΈ связаны Π·Π° спиной. Под Π»Π΅Π²Ρ‹ΠΌ Π³Π»Π°Π·ΠΎΠΌ Ρƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π±Ρ‹Π» большой синяк, Π² ΡƒΠ³Π»Ρƒ Ρ€Ρ‚Π° – ссадина с запСкшСйся ΠΊΡ€ΠΎΠ²ΡŒΡŽ. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ с Ρ‚Ρ€Π΅Π²ΠΎΠΆΠ½Ρ‹ΠΌ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚ΡΡ‚Π²ΠΎΠΌ глядСл Π½Π° ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π°. + +Π’ΠΎΡ‚ ΠΏΠΎΠΌΠΎΠ»Ρ‡Π°Π», ΠΏΠΎΡ‚ΠΎΠΌ Ρ‚ΠΈΡ…ΠΎ спросил ΠΏΠΎ-арамСйски: + +– Π’Π°ΠΊ это Ρ‚Ρ‹ ΠΏΠΎΠ΄Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π» Π½Π°Ρ€ΠΎΠ΄ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΡΠΊΠΈΠΉ Ρ…Ρ€Π°ΠΌ? + +ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈ этом сидСл ΠΊΠ°ΠΊ ΠΊΠ°ΠΌΠ΅Π½Π½Ρ‹ΠΉ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³ΡƒΠ±Ρ‹ Π΅Π³ΠΎ шСвСлились Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈ произнСсСнии слов. ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π±Ρ‹Π» ΠΊΠ°ΠΊ ΠΊΠ°ΠΌΠ΅Π½Π½Ρ‹ΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ боялся ΠΊΠ°Ρ‡Π½ΡƒΡ‚ΡŒ ΠΏΡ‹Π»Π°ΡŽΡ‰Π΅ΠΉ адской болью Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ. + +Π§Π΅Π»ΠΎΠ²Π΅ΠΊ со связанными Ρ€ΡƒΠΊΠ°ΠΌΠΈ нСсколько подался Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ Π½Π°Ρ‡Π°Π» Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ: + +– Π”ΠΎΠ±Ρ€Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ! ΠŸΠΎΠ²Π΅Ρ€ΡŒ ΠΌΠ½Π΅... + +Но ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π΅ шСвСлясь ΠΈ Π½ΠΈΡ‡ΡƒΡ‚ΡŒ Π½Π΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ голоса, Ρ‚ΡƒΡ‚ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π±ΠΈΠ» Π΅Π³ΠΎ: + +– Π­Ρ‚ΠΎ мСня Ρ‚Ρ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΡˆΡŒ Π΄ΠΎΠ±Ρ€Ρ‹ΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ? Π’Ρ‹ ошибаСшься. Π’ Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ΅ всС ΡˆΠ΅ΠΏΡ‡ΡƒΡ‚ ΠΏΡ€ΠΎ мСня, Ρ‡Ρ‚ΠΎ я свирСпоС Ρ‡ΡƒΠ΄ΠΎΠ²ΠΈΡ‰Π΅, ΠΈ это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π²Π΅Ρ€Π½ΠΎ, – ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½ΠΎ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΠ»: – ΠšΠ΅Π½Ρ‚ΡƒΡ€ΠΈΠΎΠ½Π° ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΡ ΠΊΠΎ ΠΌΠ½Π΅. + +ВсСм показалось, Ρ‡Ρ‚ΠΎ Π½Π° Π±Π°Π»ΠΊΠΎΠ½Π΅ ΠΏΠΎΡ‚Π΅ΠΌΠ½Π΅Π»ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ΅Π½Ρ‚ΡƒΡ€ΠΈΠΎΠ½, ΠΊΠΎΠΌΠ°Π½Π΄ΡƒΡŽΡ‰ΠΈΠΉ особой ΠΊΠ΅Π½Ρ‚ΡƒΡ€ΠΈΠ΅ΠΉ, ΠœΠ°Ρ€ΠΊ, ΠΏΡ€ΠΎΠ·Π²Π°Π½Π½Ρ‹ΠΉ ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΠ΅ΠΌ, прСдстал ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. + +ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΠΉ Π±Ρ‹Π» Π½Π° Π³ΠΎΠ»ΠΎΠ²Ρƒ Π²Ρ‹ΡˆΠ΅ самого высокого ΠΈΠ· солдат Π»Π΅Π³ΠΈΠΎΠ½Π° ΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΡˆΠΈΡ€ΠΎΠΊ Π² ΠΏΠ»Π΅Ρ‡Π°Ρ…, Ρ‡Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ заслонил Π΅Ρ‰Π΅ нСвысокоС солнцС. + +ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ обратился ΠΊ ΠΊΠ΅Π½Ρ‚ΡƒΡ€ΠΈΠΎΠ½Ρƒ ΠΏΠΎ-Π»Π°Ρ‚Ρ‹Π½ΠΈ: + +– ΠŸΡ€Π΅ΡΡ‚ΡƒΠΏΠ½ΠΈΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ мСня Β«Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΒ». Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΎΡ‚ΡΡŽΠ΄Π° Π½Π° ΠΌΠΈΠ½ΡƒΡ‚Ρƒ, ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ Π΅ΠΌΡƒ, ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ со ΠΌΠ½ΠΎΠΉ. Но Π½Π΅ ΠΊΠ°Π»Π΅Ρ‡ΠΈΡ‚ΡŒ. + + +И всС, ΠΊΡ€ΠΎΠΌΠ΅ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π°, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈ взглядом ΠœΠ°Ρ€ΠΊΠ° ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ°Ρ…Π½ΡƒΠ» Ρ€ΡƒΠΊΠΎΡŽ арСстованному, показывая, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π½ΠΈΠΌ. + +ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΡ Π²ΠΎΠΎΠ±Ρ‰Π΅ всС ΠΏΡ€ΠΎΠ²ΠΎΠΆΠ°Π»ΠΈ взглядами, Π³Π΄Π΅ Π±Ρ‹ ΠΎΠ½ Π½ΠΈ появлялся, ΠΈΠ·-Π·Π° Π΅Π³ΠΎ роста, Π° Ρ‚Π΅, ΠΊΡ‚ΠΎ Π²ΠΈΠ΄Π΅Π» Π΅Π³ΠΎ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅, ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ Π΅Ρ‰Π΅, Ρ‡Ρ‚ΠΎ Π»ΠΈΡ†ΠΎ ΠΊΠ΅Π½Ρ‚ΡƒΡ€ΠΈΠΎΠ½Π° Π±Ρ‹Π»ΠΎ ΠΈΠ·ΡƒΡ€ΠΎΠ΄ΠΎΠ²Π°Π½ΠΎ: нос Π΅Π³ΠΎ Π½Π΅ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π» Ρ€Π°Π·Π±ΠΈΡ‚ ΡƒΠ΄Π°Ρ€ΠΎΠΌ гСрманской ΠΏΠ°Π»ΠΈΡ†Ρ‹. + +ΠŸΡ€ΠΎΡΡ‚ΡƒΡ‡Π°Π»ΠΈ тяТСлыС сапоги ΠœΠ°Ρ€ΠΊΠ° ΠΏΠΎ ΠΌΠΎΠ·Π°ΠΈΠΊΠ΅, связанный пошСл Π·Π° Π½ΠΈΠΌ Π±Π΅ΡΡˆΡƒΠΌΠ½ΠΎ, ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅ настало Π² ΠΊΠΎΠ»ΠΎΠ½Π½Π°Π΄Π΅, ΠΈ ΡΠ»Ρ‹ΡˆΠ½ΠΎ Π±Ρ‹Π»ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΡ€ΠΊΠΎΠ²Π°Π»ΠΈ Π³ΠΎΠ»ΡƒΠ±ΠΈ Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ΅ сада Ρƒ Π±Π°Π»ΠΊΠΎΠ½Π°, Π΄Π° Π΅Ρ‰Π΅ Π²ΠΎΠ΄Π° ΠΏΠ΅Π»Π° Π·Π°ΠΌΡ‹ΡΠ»ΠΎΠ²Π°Ρ‚ΡƒΡŽ ΠΏΡ€ΠΈΡΡ‚Π½ΡƒΡŽ пСсню Π² Ρ„ΠΎΠ½Ρ‚Π°Π½Π΅. + +ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Ρƒ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ висок ΠΏΠΎΠ΄ ΡΡ‚Ρ€ΡƒΡŽ ΠΈ Ρ‚Π°ΠΊ Π·Π°ΠΌΠ΅Ρ€Π΅Ρ‚ΡŒ. Но ΠΎΠ½ Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ ΠΈ это Π΅ΠΌΡƒ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚. + +ВывСдя арСстованного ΠΈΠ·-ΠΏΠΎΠ΄ ΠΊΠΎΠ»ΠΎΠ½Π½ Π² сад. ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΠΉ Π²Ρ‹Π½ΡƒΠ» ΠΈΠ· Ρ€ΡƒΠΊ Ρƒ Π»Π΅Π³ΠΈΠΎΠ½Π΅Ρ€Π°, ΡΡ‚ΠΎΡΠ²ΡˆΠ΅Π³ΠΎ Ρƒ подноТия Π±Ρ€ΠΎΠ½Π·ΠΎΠ²ΠΎΠΉ статуи, Π±ΠΈΡ‡ ΠΈ, нСсильно Ρ€Π°Π·ΠΌΠ°Ρ…Π½ΡƒΠ²ΡˆΠΈΡΡŒ, ΡƒΠ΄Π°Ρ€ΠΈΠ» арСстованного ΠΏΠΎ ΠΏΠ»Π΅Ρ‡Π°ΠΌ. Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ΅Π½Ρ‚ΡƒΡ€ΠΈΠΎΠ½Π° Π±Ρ‹Π»ΠΎ Π½Π΅Π±Ρ€Π΅ΠΆΠ½ΠΎ ΠΈ Π»Π΅Π³ΠΊΠΎ, Π½ΠΎ связанный ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Ρ€ΡƒΡ…Π½ΡƒΠ» назСмь, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π΅ΠΌΡƒ ΠΏΠΎΠ΄Ρ€ΡƒΠ±ΠΈΠ»ΠΈ Π½ΠΎΠ³ΠΈ, захлСбнулся Π²ΠΎΠ·Π΄ΡƒΡ…ΠΎΠΌ, краска сбСТала с Π΅Π³ΠΎ Π»ΠΈΡ†Π° ΠΈ Π³Π»Π°Π·Π° ΠΎΠ±Π΅ΡΡΠΌΡ‹ΡΠ»ΠΈΠ»ΠΈΡΡŒ. ΠœΠ°Ρ€ΠΊ одною лСвою Ρ€ΡƒΠΊΠΎΠΉ, Π»Π΅Π³ΠΊΠΎ, ΠΊΠ°ΠΊ пустой мСшок, Π²Π·Π΄Π΅Ρ€Π½ΡƒΠ» Π½Π° Π²ΠΎΠ·Π΄ΡƒΡ… ΡƒΠΏΠ°Π²ΡˆΠ΅Π³ΠΎ, поставил Π΅Π³ΠΎ Π½Π° Π½ΠΎΠ³ΠΈ ΠΈ Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» гнусаво, ΠΏΠ»ΠΎΡ…ΠΎ выговаривая арамСйскиС слова: + +– Римского ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ – ΠΈΠ³Π΅ΠΌΠΎΠ½. Π”Ρ€ΡƒΠ³ΠΈΡ… слов Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ. Π‘ΠΌΠΈΡ€Π½ΠΎ ΡΡ‚ΠΎΡΡ‚ΡŒ. Π’Ρ‹ понял мСня ΠΈΠ»ΠΈ ΡƒΠ΄Π°Ρ€ΠΈΡ‚ΡŒ тСбя? + +АрСстованный ΠΏΠΎΡˆΠ°Ρ‚Π½ΡƒΠ»ΡΡ, Π½ΠΎ совладал с собою, краска Π²Π΅Ρ€Π½ΡƒΠ»Π°ΡΡŒ, ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π²Π΅Π» Π΄Ρ‹Ρ…Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Ρ…Ρ€ΠΈΠΏΠ»ΠΎ: + +– Π― понял тСбя. НС Π±Π΅ΠΉ мСня. + +Π§Π΅Ρ€Π΅Π· ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠΎΠ½ вновь стоял ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. + +ΠŸΡ€ΠΎΠ·Π²ΡƒΡ‡Π°Π» тусклый больной голос: + +– Имя? + +– МоС? – Ρ‚ΠΎΡ€ΠΎΠΏΠ»ΠΈΠ²ΠΎ отозвался арСстованный, всСм сущСством выраТая Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΠΊΠΎΠ²ΠΎ, Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π³Π½Π΅Π²Π°. + +ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ сказал Π½Π΅Π³Ρ€ΠΎΠΌΠΊΠΎ: + +– МоС – ΠΌΠ½Π΅ извСстно. НС притворяйся Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠΏΡ‹ΠΌ, Ρ‡Π΅ΠΌ Ρ‚Ρ‹ Π΅ΡΡ‚ΡŒ. Π’Π²ΠΎΠ΅. + +– Π˜Π΅ΡˆΡƒΠ°, – поспСшно ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант. + +– ΠŸΡ€ΠΎΠ·Π²ΠΈΡ‰Π΅ Π΅ΡΡ‚ΡŒ? + +– Π“Π°-Ноцри. + +– ΠžΡ‚ΠΊΡƒΠ΄Π° Ρ‚Ρ‹ Ρ€ΠΎΠ΄ΠΎΠΌ? + +– Из Π³ΠΎΡ€ΠΎΠ΄Π° Π“Π°ΠΌΠ°Π»Ρ‹, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант, Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ показывая, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ, Π³Π΄Π΅-Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ, Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΎΡ‚ Π½Π΅Π³ΠΎ, Π½Π° сСвСрС, Π΅ΡΡ‚ΡŒ Π³ΠΎΡ€ΠΎΠ΄ Π“Π°ΠΌΠ°Π»Π°. + +– ΠšΡ‚ΠΎ Ρ‚Ρ‹ ΠΏΠΎ ΠΊΡ€ΠΎΠ²ΠΈ? + +– Π― Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ знаю, – ΠΆΠΈΠ²ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстованный, – я Π½Π΅ помню ΠΌΠΎΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. МнС Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ ΠΎΡ‚Π΅Ρ† Π±Ρ‹Π» сириСц... + +– Π“Π΄Π΅ Ρ‚Ρ‹ ТивСшь постоянно? + +– Π£ мСня Π½Π΅Ρ‚ постоянного ΠΆΠΈΠ»ΠΈΡ‰Π°, – застСнчиво ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант, – я ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽ ΠΈΠ· Π³ΠΎΡ€ΠΎΠ΄Π° Π² Π³ΠΎΡ€ΠΎΠ΄. + +– Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‡Π΅, ΠΎΠ΄Π½ΠΈΠΌ словом – бродяга, – сказал ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΠΈ спросил: – Π ΠΎΠ΄Π½Ρ‹Π΅ Π΅ΡΡ‚ΡŒ? + +– НСт Π½ΠΈΠΊΠΎΠ³ΠΎ. Π― ΠΎΠ΄ΠΈΠ½ Π² ΠΌΠΈΡ€Π΅. + +– Π—Π½Π°Π΅ΡˆΡŒ Π»ΠΈ Π³Ρ€Π°ΠΌΠΎΡ‚Ρƒ? + +– Π”Π°. + +– Π—Π½Π°Π΅ΡˆΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ язык, ΠΊΡ€ΠΎΠΌΠ΅ арамСйского? + +– Π—Π½Π°ΡŽ. ГрСчСский. + +Π’ΡΠΏΡƒΡ…ΡˆΠ΅Π΅ Π²Π΅ΠΊΠΎ ΠΏΡ€ΠΈΠΏΠΎΠ΄Π½ΡΠ»ΠΎΡΡŒ, ΠΏΠΎΠ΄Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ Π΄Ρ‹ΠΌΠΊΠΎΠΉ страдания Π³Π»Π°Π· уставился Π½Π° арСстованного. Π”Ρ€ΡƒΠ³ΠΎΠΉ Π³Π»Π°Π· остался Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ. + +ΠŸΠΈΠ»Π°Ρ‚ Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΏΠΎ-грСчСски: + +– Π’Π°ΠΊ Ρ‚Ρ‹ собирался Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Π·Π΄Π°Π½ΠΈΠ΅ Ρ…Ρ€Π°ΠΌΠ° ΠΈ ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°Π» ΠΊ этому Π½Π°Ρ€ΠΎΠ΄? + +Π’ΡƒΡ‚ арСстант ΠΎΠΏΡΡ‚ΡŒ оТивился, Π³Π»Π°Π·Π° Π΅Π³ΠΎ пСрСстали Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒ испуг, ΠΈ ΠΎΠ½ Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΏΠΎ-грСчСски: + +– Π―, Π΄ΠΎΠ±... – Ρ‚ΡƒΡ‚ уТас ΠΌΠ΅Π»ΡŒΠΊΠ½ΡƒΠ» Π² Π³Π»Π°Π·Π°Ρ… арСстанта ΠΎΡ‚Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΅Π΄Π²Π° Π½Π΅ оговорился, – я, ΠΈΠ³Π΅ΠΌΠΎΠ½, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π² ΠΆΠΈΠ·Π½ΠΈ Π½Π΅ собирался Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ Π·Π΄Π°Π½ΠΈΠ΅ Ρ…Ρ€Π°ΠΌΠ° ΠΈ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π» Π½Π° это бСссмыслСнноС дСйствиС. + +Π£Π΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ€Π°Π·ΠΈΠ»ΠΎΡΡŒ Π½Π° Π»ΠΈΡ†Π΅ сСкрСтаря, ΡΠ³ΠΎΡ€Π±ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ Π½Π°Π΄ низСньким столом ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ показания. Он поднял Π³ΠΎΠ»ΠΎΠ²Ρƒ, Π½ΠΎ тотчас ΠΆΠ΅ ΠΎΠΏΡΡ‚ΡŒ склонил Π΅Π΅ ΠΊ ΠΏΠ΅Ρ€Π³Π°ΠΌΠ΅Π½Ρ‚Ρƒ. + +– ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… людСй стСкаСтся Π² этот Π³ΠΎΡ€ΠΎΠ΄ ΠΊ ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊΡƒ. Π‘Ρ‹Π²Π°ΡŽΡ‚ срСди Π½ΠΈΡ… ΠΌΠ°Π³ΠΈ, астрологи, прСдсказатСли ΠΈ ΡƒΠ±ΠΈΠΉΡ†Ρ‹, – Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½ΠΎ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, – Π° ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ΡΡ ΠΈ Π»Π³ΡƒΠ½Ρ‹. Π’Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»Π³ΡƒΠ½. Записано ясно: ΠΏΠΎΠ΄Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π» Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ…Ρ€Π°ΠΌ. Π’Π°ΠΊ ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΡŽΡ‚ люди. + +– Π­Ρ‚ΠΈ Π΄ΠΎΠ±Ρ€Ρ‹Π΅ люди, – Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» арСстант ΠΈ, Ρ‚ΠΎΡ€ΠΎΠΏΠ»ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΠ²: – ΠΈΠ³Π΅ΠΌΠΎΠ½, – ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»: – Π½ΠΈΡ‡Π΅ΠΌΡƒ Π½Π΅ ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΈ всС ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ». Π― Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ ΠΎΠΏΠ°ΡΠ°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° эта Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя. И всС ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅Π²Π΅Ρ€Π½ΠΎ записываСт Π·Π° ΠΌΠ½ΠΎΠΉ. + +Наступило ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΆΠ΅ ΠΎΠ±Π° Π±ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π³Π»Π°Π·Π° тяТСло глядСли Π½Π° арСстанта. + +– ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽ Ρ‚Π΅Π±Π΅, Π½ΠΎ Π² послСдний Ρ€Π°Π·: ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΡŒ ΠΏΡ€ΠΈΡ‚Π²ΠΎΡ€ΡΡ‚ΡŒΡΡ ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠΈΠΌ, Ρ€Π°Π·Π±ΠΎΠΉΠ½ΠΈΠΊ, – произнСс ΠŸΠΈΠ»Π°Ρ‚ мягко ΠΈ ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½ΠΎ, – Π·Π° Ρ‚ΠΎΠ±ΠΎΡŽ записано Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ записанного достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ тСбя ΠΏΠΎΠ²Π΅ΡΠΈΡ‚ΡŒ. + +– НСт, Π½Π΅Ρ‚, ΠΈΠ³Π΅ΠΌΠΎΠ½, – вСсь Π½Π°ΠΏΡ€ΡΠ³Π°ΡΡΡŒ Π² ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒ, Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» арСстованный, – Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ с ΠΊΠΎΠ·Π»ΠΈΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π³Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚. Но я ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ заглянул Π² этот ΠΏΠ΅Ρ€Π³Π°ΠΌΠ΅Π½Ρ‚ ΠΈ уТаснулся. Π Π΅ΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ написано, я Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ». Π― Π΅Π³ΠΎ умолял: соТги Ρ‚Ρ‹ Π±ΠΎΠ³Π° Ρ€Π°Π΄ΠΈ свой ΠΏΠ΅Ρ€Π³Π°ΠΌΠ΅Π½Ρ‚! Но ΠΎΠ½ Π²Ρ‹Ρ€Π²Π°Π» Π΅Π³ΠΎ Ρƒ мСня ΠΈΠ· Ρ€ΡƒΠΊ ΠΈ ΡƒΠ±Π΅ΠΆΠ°Π». + +– ΠšΡ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ? – Π±Ρ€Π΅Π·Π³Π»ΠΈΠ²ΠΎ спросил ΠŸΠΈΠ»Π°Ρ‚ ΠΈ Ρ‚Ρ€ΠΎΠ½ΡƒΠ» висок Ρ€ΡƒΠΊΠΎΠΉ. + +– Π›Π΅Π²ΠΈΠΉ ΠœΠ°Ρ‚Π²Π΅ΠΉ, – ΠΎΡ…ΠΎΡ‚Π½ΠΎ объяснил арСстант, – ΠΎΠ½ Π±Ρ‹Π» сборщиком ΠΏΠΎΠ΄Π°Ρ‚Π΅ΠΉ, ΠΈ я с Π½ΠΈΠΌ встрСтился Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π½Π° Π΄ΠΎΡ€ΠΎΠ³Π΅ Π² Π’ΠΈΡ„Ρ„Π°Π³ΠΈΠΈ, Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΡƒΠ³Π»ΠΎΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ„ΠΈΠ³ΠΎΠ²Ρ‹ΠΉ сад, ΠΈ разговорился с Π½ΠΈΠΌ. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ отнСсся ΠΊΠΎ ΠΌΠ½Π΅ нСприязнСнно ΠΈ Π΄Π°ΠΆΠ΅ оскорблял мСня, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ оскорбляСт, называя мСня собакой, – Ρ‚ΡƒΡ‚ арСстант усмСхнулся, – я Π»ΠΈΡ‡Π½ΠΎ Π½Π΅ Π²ΠΈΠΆΡƒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ Π² этом Π·Π²Π΅Ρ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΈΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° это слово... + +Π‘Π΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ пСрСстал Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ΄Ρ‚ΠΈΡˆΠΊΠ° бросил ΡƒΠ΄ΠΈΠ²Π»Π΅Π½Π½Ρ‹ΠΉ взгляд, Π½ΠΎ Π½Π΅ Π½Π° арСстованного, Π° Π½Π° ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π°. + +– ...ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΡΠ»ΡƒΡˆΠ°Π² мСня, ΠΎΠ½ стал ΡΠΌΡΠ³Ρ‡Π°Ρ‚ΡŒΡΡ, – ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Π˜Π΅ΡˆΡƒΠ°, – Π½Π°ΠΊΠΎΠ½Π΅Ρ† бросил дСньги Π½Π° Π΄ΠΎΡ€ΠΎΠ³Ρƒ ΠΈ сказал, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ со ΠΌΠ½ΠΎΠΉ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ... + +ΠŸΠΈΠ»Π°Ρ‚ усмСхнулся одною Ρ‰Π΅ΠΊΠΎΠΉ, оскалив ΠΆΠ΅Π»Ρ‚Ρ‹Π΅ Π·ΡƒΠ±Ρ‹, ΠΈ ΠΏΡ€ΠΎΠΌΠΎΠ»Π²ΠΈΠ», ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΠ²ΡˆΠΈΡΡŒ всСм Ρ‚ΡƒΠ»ΠΎΠ²ΠΈΡ‰Π΅ΠΌ ΠΊ ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŽ: + +– О, Π³ΠΎΡ€ΠΎΠ΄ Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌ! Π§Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ ΡƒΡΠ»Ρ‹ΡˆΠΈΡˆΡŒ Π² Π½Π΅ΠΌ. Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ ΠΏΠΎΠ΄Π°Ρ‚Π΅ΠΉ, Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠΈΡ‚Π΅, бросил дСньги Π½Π° Π΄ΠΎΡ€ΠΎΠ³Ρƒ! + +НС зная, ΠΊΠ°ΠΊ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° это, ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ счСл Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΡƒΠ»Ρ‹Π±ΠΊΡƒ ΠŸΠΈΠ»Π°Ρ‚Π°. + +– А ΠΎΠ½ сказал, Ρ‡Ρ‚ΠΎ дСньги Π΅ΠΌΡƒ ΠΎΡ‚Π½Ρ‹Π½Π΅ стали нСнавистны, – объяснил Π˜Π΅ΡˆΡƒΠ° странныС дСйствия ЛСвия ΠœΠ°Ρ‚Π²Π΅Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»: – И с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΎΠ½ стал ΠΌΠΎΠΈΠΌ спутником. + +ВсС Π΅Ρ‰Π΅ скалясь, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ поглядСл Π½Π° арСстованного, Π·Π°Ρ‚Π΅ΠΌ Π½Π° солнцС, Π½Π΅ΡƒΠΊΠ»ΠΎΠ½Π½ΠΎ ΠΏΠΎΠ΄Ρ‹ΠΌΠ°ΡŽΡ‰Π΅Π΅ΡΡ Π²Π²Π΅Ρ€Ρ… Π½Π°Π΄ ΠΊΠΎΠ½Π½Ρ‹ΠΌΠΈ статуями Π³ΠΈΠΏΠΏΠΎΠ΄Ρ€ΠΎΠΌΠ°, Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π²Π½ΠΈΠ·Ρƒ Π½Π°ΠΏΡ€Π°Π²ΠΎ, ΠΈ Π²Π΄Ρ€ΡƒΠ³ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ‚ΠΎΡˆΠ½ΠΎΠΉ ΠΌΡƒΠΊΠ΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ всСго Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΠ·Π³Π½Π°Ρ‚ΡŒ с Π±Π°Π»ΠΊΠΎΠ½Π° этого странного Ρ€Π°Π·Π±ΠΎΠΉΠ½ΠΈΠΊΠ°, произнСся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° слова: Β«ΠŸΠΎΠ²Π΅ΡΠΈΡ‚ΡŒ Π΅Π³ΠΎΒ». Π˜Π·Π³Π½Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠ½Π²ΠΎΠΉ, ΡƒΠΉΡ‚ΠΈ ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ½Π½Π°Π΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΄Π²ΠΎΡ€Ρ†Π°, Π²Π΅Π»Π΅Ρ‚ΡŒ Π·Π°Ρ‚Π΅ΠΌΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρƒ, ΠΏΠΎΠ²Π°Π»ΠΈΡ‚ΡŒΡΡ Π½Π° Π»ΠΎΠΆΠ΅, ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΉ Π²ΠΎΠ΄Ρ‹, ΠΆΠ°Π»ΠΎΠ±Π½Ρ‹ΠΌ голосом ΠΏΠΎΠ·Π²Π°Ρ‚ΡŒ собаку Π‘Π°Π½Π³Π°, ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΅ΠΉ Π½Π° Π³Π΅ΠΌΠΈΠΊΡ€Π°Π½ΠΈΡŽ. И ΠΌΡ‹ΡΠ»ΡŒ ΠΎΠ± ядС Π²Π΄Ρ€ΡƒΠ³ ΡΠΎΠ±Π»Π°Π·Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π»ΡŒΠΊΠ½ΡƒΠ»Π° Π² больной Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π°. + +Он смотрСл ΠΌΡƒΡ‚Π½Ρ‹ΠΌΠΈ Π³Π»Π°Π·Π°ΠΌΠΈ Π½Π° арСстованного ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя ΠΌΠΎΠ»Ρ‡Π°Π», ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ вспоминая, Π·Π°Ρ‡Π΅ΠΌ Π½Π° ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ бСзТалостном Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΡΠΊΠΎΠΌ солнцСпСкС стоит ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ арСстант с ΠΎΠ±Π΅Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΌ побоями Π»ΠΈΡ†ΠΎΠΌ, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΅Ρ‰Π΅ Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹Π΅ вопросы Π΅ΠΌΡƒ придСтся Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ. + +– Π›Π΅Π²ΠΈΠΉ ΠœΠ°Ρ‚Π²Π΅ΠΉ? – Ρ…Ρ€ΠΈΠΏΠ»Ρ‹ΠΌ голосом спросил больной ΠΈ Π·Π°ΠΊΡ€Ρ‹Π» Π³Π»Π°Π·Π°. + +– Π”Π°, Π›Π΅Π²ΠΈΠΉ ΠœΠ°Ρ‚Π²Π΅ΠΉ, – донСсся Π΄ΠΎ Π½Π΅Π³ΠΎ высокий, ΠΌΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ голос. + +– А Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ всС-Ρ‚Π°ΠΊΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΏΡ€ΠΎ Ρ…Ρ€Π°ΠΌ Ρ‚ΠΎΠ»ΠΏΠ΅ Π½Π° Π±Π°Π·Π°Ρ€Π΅? + +Голос ΠΎΡ‚Π²Π΅Ρ‡Π°Π²ΡˆΠ΅Π³ΠΎ, казалось, ΠΊΠΎΠ»ΠΎΠ» ΠŸΠΈΠ»Π°Ρ‚Ρƒ Π² висок, Π±Ρ‹Π» Π½Π΅Π²Ρ‹Ρ€Π°Π·ΠΈΠΌΠΎ ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»Π΅Π½, ΠΈ этот голос Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»: + +– Π―, ΠΈΠ³Π΅ΠΌΠΎΠ½, Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€ΡƒΡ…Π½Π΅Ρ‚ Ρ…Ρ€Π°ΠΌ старой Π²Π΅Ρ€Ρ‹ ΠΈ создастся Π½ΠΎΠ²Ρ‹ΠΉ Ρ…Ρ€Π°ΠΌ истины. Π‘ΠΊΠ°Π·Π°Π» Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ понятнСС. + +– Π—Π°Ρ‡Π΅ΠΌ ΠΆΠ΅ Ρ‚Ρ‹, бродяга, Π½Π° Π±Π°Π·Π°Ρ€Π΅ смущал Π½Π°Ρ€ΠΎΠ΄, рассказывая ΠΏΡ€ΠΎ истину, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚Ρ‹ Π½Π΅ имССшь прСдставлСния? Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ истина? + +И Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»: «О, Π±ΠΎΠ³ΠΈ ΠΌΠΎΠΈ! Π― ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽ Π΅Π³ΠΎ ΠΎ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠΌ Π½Π° судС... Мой ΡƒΠΌ Π½Π΅ слуТит ΠΌΠ½Π΅ большС...Β» И ΠΎΠΏΡΡ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ€Π΅Ρ‰ΠΈΠ»Π°ΡΡŒ Π΅ΠΌΡƒ Ρ‡Π°ΡˆΠ° с Ρ‚Π΅ΠΌΠ½ΠΎΡŽ ΠΆΠΈΠ΄ΠΊΠΎΡΡ‚ΡŒΡŽ. Β«Π―Π΄Ρƒ ΠΌΠ½Π΅, яду!Β» + +И вновь ΠΎΠ½ ΡƒΡΠ»Ρ‹ΡˆΠ°Π» голос: + +– Π˜ΡΡ‚ΠΈΠ½Π° ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ тСбя Π±ΠΎΠ»ΠΈΡ‚ Π³ΠΎΠ»ΠΎΠ²Π°, ΠΈ Π±ΠΎΠ»ΠΈΡ‚ Ρ‚Π°ΠΊ сильно, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ ΠΌΠ°Π»ΠΎΠ΄ΡƒΡˆΠ½ΠΎ ΠΏΠΎΠΌΡ‹ΡˆΠ»ΡΠ΅ΡˆΡŒ ΠΎ смСрти. Π’Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ Π² силах Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ со ΠΌΠ½ΠΎΠΉ, Π½ΠΎ Ρ‚Π΅Π±Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π°ΠΆΠ΅ Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π½Π° мСня. И сСйчас я нСвольно являюсь Ρ‚Π²ΠΎΠΈΠΌ ΠΏΠ°Π»Π°Ρ‡ΠΎΠΌ, Ρ‡Ρ‚ΠΎ мСня ΠΎΠ³ΠΎΡ€Ρ‡Π°Π΅Ρ‚. Π’Ρ‹ Π½Π΅ моТСшь Π΄Π°ΠΆΠ΅ ΠΈ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‡Π΅ΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈ ΠΌΠ΅Ρ‡Ρ‚Π°Π΅ΡˆΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡˆΠ»Π° твоя собака, СдинствСнноС, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, сущСство, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ‚Ρ‹ привязан. Но мучСния Ρ‚Π²ΠΎΠΈ сСйчас кончатся, Π³ΠΎΠ»ΠΎΠ²Π° ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚. + +Π‘Π΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ Π²Ρ‹Ρ‚Π°Ρ€Π°Ρ‰ΠΈΠ» Π³Π»Π°Π·Π° Π½Π° арСстанта ΠΈ Π½Π΅ дописал слова. + +ΠŸΠΈΠ»Π°Ρ‚ поднял мучСничСскиС Π³Π»Π°Π·Π° Π½Π° арСстанта ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎ солнцС ΡƒΠΆΠ΅ довольно высоко стоит Π½Π°Π΄ Π³ΠΈΠΏΠΏΠΎΠ΄Ρ€ΠΎΠΌΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ пробрался Π² ΠΊΠΎΠ»ΠΎΠ½Π½Π°Π΄Ρƒ ΠΈ ΠΏΠΎΠ΄ΠΏΠΎΠ»Π·Π°Π΅Ρ‚ ΠΊ стоптанным сандалиям Π˜Π΅ΡˆΡƒΠ°, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‚ сторонится ΠΎΡ‚ солнца. + +Π’ΡƒΡ‚ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ поднялся с крСсла, сТал Π³ΠΎΠ»ΠΎΠ²Ρƒ Ρ€ΡƒΠΊΠ°ΠΌΠΈ, ΠΈ Π½Π° ΠΆΠ΅Π»Ρ‚ΠΎΠ²Π°Ρ‚ΠΎΠΌ Π΅Π³ΠΎ Π±Ρ€ΠΈΡ‚ΠΎΠΌ Π»ΠΈΡ†Π΅ выразился уТас. Но ΠΎΠ½ тотчас ΠΆΠ΅ ΠΏΠΎΠ΄Π°Π²ΠΈΠ» Π΅Π³ΠΎ своСю волСю ΠΈ вновь опустился Π² крСсло. + +АрСстант ΠΆΠ΅ Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» свою Ρ€Π΅Ρ‡ΡŒ, Π½ΠΎ ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ записывал, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, вытянув шСю, ΠΊΠ°ΠΊ Π³ΡƒΡΡŒ, старался Π½Π΅ ΠΏΡ€ΠΎΡ€ΠΎΠ½ΠΈΡ‚ΡŒ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ слова. + +– Ну Π²ΠΎΡ‚, всС ΠΈ ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ, – Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» арСстованный, Π±Π»Π°Π³ΠΎΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ поглядывая Π½Π° ΠŸΠΈΠ»Π°Ρ‚Π°, – ΠΈ я Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ этому Ρ€Π°Π΄. Π― совСтовал Π±Ρ‹ Ρ‚Π΅Π±Π΅, ΠΈΠ³Π΅ΠΌΠΎΠ½, ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π° врСмя Π΄Π²ΠΎΡ€Π΅Ρ† ΠΈ ΠΏΠΎΠ³ΡƒΠ»ΡΡ‚ΡŒ пСшком Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² окрСстностях, Π½Ρƒ хотя Π±Ρ‹ Π² садах Π½Π° ЕлСонской Π³ΠΎΡ€Π΅. Π“Ρ€ΠΎΠ·Π° начнСтся, – арСстант повСрнулся, прищурился Π½Π° солнцС, – ΠΏΠΎΠ·ΠΆΠ΅, ΠΊ Π²Π΅Ρ‡Π΅Ρ€Ρƒ. ΠŸΡ€ΠΎΠ³ΡƒΠ»ΠΊΠ° принСсла Π±Ρ‹ Ρ‚Π΅Π±Π΅ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ, Π° я с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ сопровоТдал Π±Ρ‹ тСбя. МнС ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ Π½ΠΎΠ²Ρ‹Π΅ мысли, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹, полагаю, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ‚Π΅Π±Π΅ интСрСсными, ΠΈ я ΠΎΡ…ΠΎΡ‚Π½ΠΎ подСлился Π±Ρ‹ ΠΈΠΌΠΈ с Ρ‚ΠΎΠ±ΠΎΠΉ, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡˆΡŒ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. + +Π‘Π΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ ΡΠΌΠ΅Ρ€Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ±Π»Π΅Π΄Π½Π΅Π» ΠΈ ΡƒΡ€ΠΎΠ½ΠΈΠ» свиток Π½Π° ΠΏΠΎΠ». + +– Π‘Π΅Π΄Π° Π² Ρ‚ΠΎΠΌ, – ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Π½ΠΈΠΊΠ΅ΠΌ Π½Π΅ останавливаСмый связанный, – Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ слишком Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ ΠΈ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ потСрял Π²Π΅Ρ€Ρƒ Π² людСй. Π’Π΅Π΄ΡŒ нСльзя ΠΆΠ΅, согласись, ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всю свою ΠΏΡ€ΠΈΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ Π² собаку. Ввоя Тизнь скудна, ΠΈΠ³Π΅ΠΌΠΎΠ½, – ΠΈ Ρ‚ΡƒΡ‚ говорящий ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» сСбС ΡƒΠ»Ρ‹Π±Π½ΡƒΡ‚ΡŒΡΡ. + +Π‘Π΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ Π΄ΡƒΠΌΠ°Π» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ, Π²Π΅Ρ€ΠΈΡ‚ΡŒ Π»ΠΈ Π΅ΠΌΡƒ ΡƒΡˆΠ°ΠΌ своим ΠΈΠ»ΠΈ Π½Π΅ Π²Π΅Ρ€ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π²Π΅Ρ€ΠΈΡ‚ΡŒ. Π’ΠΎΠ³Π΄Π° ΠΎΠ½ постарался ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС, Π² ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΡ‡ΡƒΠ΄Π»ΠΈΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π²Ρ‹Π»ΡŒΠ΅Ρ‚ΡΡ Π³Π½Π΅Π² Π²ΡΠΏΡ‹Π»ΡŒΡ‡ΠΈΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΈ этой нСслыханной дСрзости арСстованного. И этого ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС Π½Π΅ ΠΌΠΎΠ³, хотя ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°Π» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π°. + +Π’ΠΎΠ³Π΄Π° раздался сорванный, Ρ…Ρ€ΠΈΠΏΠ»ΠΎΠ²Π°Ρ‚Ρ‹ΠΉ голос ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π°, ΠΏΠΎ-Π»Π°Ρ‚Ρ‹Π½ΠΈ сказавшСго: + +– РазвяТитС Π΅ΠΌΡƒ Ρ€ΡƒΠΊΠΈ. + +Один ΠΈΠ· ΠΊΠΎΠ½Π²ΠΎΠΉΠ½Ρ‹Ρ… Π»Π΅Π³ΠΈΠΎΠ½Π΅Ρ€ΠΎΠ² стукнул копьСм, ΠΏΠ΅Ρ€Π΅Π΄Π°Π» Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, подошСл ΠΈ снял Π²Π΅Ρ€Π΅Π²ΠΊΠΈ с арСстанта. Π‘Π΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ поднял свиток, Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ Π½ΠΈΡ‡Π΅ΠΌΡƒ Π½Π΅ ΡƒΠ΄ΠΈΠ²Π»ΡΡ‚ΡŒΡΡ. + +– Бознайся, – Ρ‚ΠΈΡ…ΠΎ ΠΏΠΎ-грСчСски спросил ΠŸΠΈΠ»Π°Ρ‚, – Ρ‚Ρ‹ Π²Π΅Π»ΠΈΠΊΠΈΠΉ Π²Ρ€Π°Ρ‡? + +– НСт, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, я Π½Π΅ Π²Ρ€Π°Ρ‡, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант, с наслаТдСниСм потирая ΠΈΠ·ΠΌΡΡ‚ΡƒΡŽ ΠΈ ΠΎΠΏΡƒΡ…ΡˆΡƒΡŽ Π±Π°Π³Ρ€ΠΎΠ²ΡƒΡŽ ΠΊΠΈΡΡ‚ΡŒ Ρ€ΡƒΠΊΠΈ. + +ΠšΡ€ΡƒΡ‚ΠΎ, исподлобья ΠŸΠΈΠ»Π°Ρ‚ Π±ΡƒΡ€Π°Π²ΠΈΠ» Π³Π»Π°Π·Π°ΠΌΠΈ арСстанта, ΠΈ Π² этих Π³Π»Π°Π·Π°Ρ… ΡƒΠΆΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΌΡƒΡ‚ΠΈ, Π² Π½ΠΈΡ… появились всСм Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ искры. + +– Π― Π½Π΅ спросил тСбя, – сказал ΠŸΠΈΠ»Π°Ρ‚, – Ρ‚Ρ‹, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, знаСшь ΠΈ латинский язык? + +– Π”Π°, знаю, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант. + +ΠšΡ€Π°ΡΠΊΠ° выступила Π½Π° ΠΆΠ΅Π»Ρ‚ΠΎΠ²Π°Ρ‚Ρ‹Ρ… Ρ‰Π΅ΠΊΠ°Ρ… ΠŸΠΈΠ»Π°Ρ‚Π°, ΠΈ ΠΎΠ½ спросил ΠΏΠΎ-Π»Π°Ρ‚Ρ‹Π½ΠΈ: + +– Как Ρ‚Ρ‹ ΡƒΠ·Π½Π°Π», Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ·Π²Π°Ρ‚ΡŒ собаку? + +– Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант ΠΏΠΎ-Π»Π°Ρ‚Ρ‹Π½ΠΈ, – Ρ‚Ρ‹ Π²ΠΎΠ΄ΠΈΠ» Ρ€ΡƒΠΊΠΎΠΉ ΠΏΠΎ Π²ΠΎΠ·Π΄ΡƒΡ…Ρƒ, – арСстант ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ» ТСст ΠŸΠΈΠ»Π°Ρ‚Π°, – ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ³Π»Π°Π΄ΠΈΡ‚ΡŒ, ΠΈ Π³ΡƒΠ±Ρ‹... + +– Π”Π°, – сказал ΠŸΠΈΠ»Π°Ρ‚. + +ΠŸΠΎΠΌΠΎΠ»Ρ‡Π°Π»ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌ ΠŸΠΈΠ»Π°Ρ‚ Π·Π°Π΄Π°Π» вопрос ΠΏΠΎ-грСчСски: + +– Π˜Ρ‚Π°ΠΊ, Ρ‚Ρ‹ Π²Ρ€Π°Ρ‡? + +– НСт, Π½Π΅Ρ‚, – ΠΆΠΈΠ²ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант, – ΠΏΠΎΠ²Π΅Ρ€ΡŒ ΠΌΠ½Π΅, я Π½Π΅ Π²Ρ€Π°Ρ‡. + +– Ну, Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Если Ρ…ΠΎΡ‡Π΅ΡˆΡŒ это Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² Ρ‚Π°ΠΉΠ½Π΅, Π΄Π΅Ρ€ΠΆΠΈ. К Π΄Π΅Π»Ρƒ это прямого ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚. Π’Π°ΠΊ Ρ‚Ρ‹ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅ΡˆΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°Π» Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ... ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΆΠ΅Ρ‡ΡŒ, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΈΠ½Ρ‹ΠΌ способом ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ Ρ…Ρ€Π°ΠΌ? + +– Π―, ΠΈΠ³Π΅ΠΌΠΎΠ½, Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°Π» ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ дСйствиям, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽ. Π Π°Π·Π²Π΅ я ΠΏΠΎΡ…ΠΎΠΆ Π½Π° слабоумного? + +– О Π΄Π°, Ρ‚Ρ‹ Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° слабоумного, – Ρ‚ΠΈΡ…ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΠΈ улыбнулся ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠΉ ΡƒΠ»Ρ‹Π±ΠΊΠΎΠΉ, – Ρ‚Π°ΠΊ поклянись, Ρ‡Ρ‚ΠΎ этого Π½Π΅ Π±Ρ‹Π»ΠΎ. + +– Π§Π΅ΠΌ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я поклялся? – спросил, ΠΎΡ‡Π΅Π½ΡŒ оТивившись, развязанный. + +– Ну, хотя Π±Ρ‹ Тизнью Ρ‚Π²ΠΎΠ΅ΡŽ, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, – Сю ΠΊΠ»ΡΡΡ‚ΡŒΡΡ самоС врСмя, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° висит Π½Π° волоскС, Π·Π½Π°ΠΉ это! + +– НС Π΄ΡƒΠΌΠ°Π΅ΡˆΡŒ Π»ΠΈ Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ Π΅Π΅ подвСсил, ΠΈΠ³Π΅ΠΌΠΎΠ½? – спросил арСстант, – Ссли это Ρ‚Π°ΠΊ, Ρ‚Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ошибаСшься. + +ΠŸΠΈΠ»Π°Ρ‚ Π²Π·Π΄Ρ€ΠΎΠ³Π½ΡƒΠ» ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» сквозь Π·ΡƒΠ±Ρ‹: + +– Π― ΠΌΠΎΠ³Ρƒ ΠΏΠ΅Ρ€Π΅Ρ€Π΅Π·Π°Ρ‚ΡŒ этот волосок. + +– И Π² этом Ρ‚Ρ‹ ошибаСшься, – свСтло ΡƒΠ»Ρ‹Π±Π°ΡΡΡŒ ΠΈ заслоняясь Ρ€ΡƒΠΊΠΎΠΉ ΠΎΡ‚ солнца, Π²ΠΎΠ·Ρ€Π°Π·ΠΈΠ» арСстант, – согласись, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ€Π΅Π·Π°Ρ‚ΡŒ волосок ΡƒΠΆ Π½Π°Π²Π΅Ρ€Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ лишь Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ подвСсил? + +– Π’Π°ΠΊ, Ρ‚Π°ΠΊ, – ΡƒΠ»Ρ‹Π±Π½ΡƒΠ²ΡˆΠΈΡΡŒ, сказал ΠŸΠΈΠ»Π°Ρ‚, – Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я Π½Π΅ сомнСваюсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π·Π΄Π½Ρ‹Π΅ Π·Π΅Π²Π°ΠΊΠΈ Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ΅ Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ Π·Π° Ρ‚ΠΎΠ±ΠΎΡŽ ΠΏΠΎ пятам. НС знаю, ΠΊΡ‚ΠΎ подвСсил Ρ‚Π²ΠΎΠΉ язык, Π½ΠΎ подвСшСн ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. ΠšΡΡ‚Π°Ρ‚ΠΈ, скаТи: Π²Π΅Ρ€Π½ΠΎ Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ явился Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· БузскиС Π²ΠΎΡ€ΠΎΡ‚Π° Π²Π΅Ρ€Ρ…ΠΎΠΌ Π½Π° ослС, сопровоТдаСмый Ρ‚ΠΎΠ»ΠΏΠΎΡŽ Ρ‡Π΅Ρ€Π½ΠΈ, ΠΊΡ€ΠΈΡ‡Π°Π²ΡˆΠ΅ΠΉ Ρ‚Π΅Π±Π΅ привСтствия ΠΊΠ°ΠΊ Π±Ρ‹ Π½Π΅ΠΊΠΎΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΡ€ΠΎΠΊΡƒ? – Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΡƒΠΊΠ°Π·Π°Π» Π½Π° свиток ΠΏΠ΅Ρ€Π³Π°ΠΌΠ΅Π½Ρ‚Π°. + +АрСстант Π½Π΅Π΄ΠΎΡƒΠΌΠ΅Π½Π½ΠΎ поглядСл Π½Π° ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π°. + +– Π£ мСня ΠΈ осла-Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ‚, ΠΈΠ³Π΅ΠΌΠΎΠ½, – сказал ΠΎΠ½. – ΠŸΡ€ΠΈΡˆΠ΅Π» я Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· БузскиС Π²ΠΎΡ€ΠΎΡ‚Π°, Π½ΠΎ пСшком, Π² сопровоТдСнии ΠΎΠ΄Π½ΠΎΠ³ΠΎ ЛСвия ΠœΠ°Ρ‚Π²Π΅Ρ, ΠΈ Π½ΠΈΠΊΡ‚ΠΎ ΠΌΠ½Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΊΡ€ΠΈΡ‡Π°Π», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½ΠΈΠΊΡ‚ΠΎ мСня Ρ‚ΠΎΠ³Π΄Π° Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ΅ Π½Π΅ Π·Π½Π°Π». + +– НС знаСшь Π»ΠΈ Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΈΡ…, – ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» ΠŸΠΈΠ»Π°Ρ‚, Π½Π΅ сводя Π³Π»Π°Π· с арСстанта, – Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ Дисмаса, Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ – ГСстаса ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ – Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½Π°? + +– Π­Ρ‚ΠΈΡ… Π΄ΠΎΠ±Ρ€Ρ‹Ρ… людСй я Π½Π΅ знаю, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант. + +– ΠŸΡ€Π°Π²Π΄Π°? + +– ΠŸΡ€Π°Π²Π΄Π°. + +– А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ скаТи ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ это Ρ‚Ρ‹ всС врСмя ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΠ΅ΡˆΡŒ слова Β«Π΄ΠΎΠ±Ρ€Ρ‹Π΅ люди»? Π’Ρ‹ всСх, Ρ‡Ρ‚ΠΎ Π»ΠΈ, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΡˆΡŒ? + +– ВсСх, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант, – Π·Π»Ρ‹Ρ… людСй Π½Π΅Ρ‚ Π½Π° свСтС. + +– Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΡΠ»Ρ‹ΡˆΡƒ ΠΎΠ± этом, – сказал ΠŸΠΈΠ»Π°Ρ‚, ΡƒΡΠΌΠ΅Ρ…Π½ΡƒΠ²ΡˆΠΈΡΡŒ, – Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, я ΠΌΠ°Π»ΠΎ знаю Тизнь! ΠœΠΎΠΆΠ΅Ρ‚Π΅ дальнСйшСС Π½Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ, – обратился ΠΎΠ½ ΠΊ ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŽ, хотя Ρ‚ΠΎΡ‚ ΠΈ Ρ‚Π°ΠΊ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ записывал, ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ арСстанту: – Π’ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ· грСчСских ΠΊΠ½ΠΈΠ³ Ρ‚Ρ‹ ΠΏΡ€ΠΎΡ‡Π΅Π» ΠΎΠ± этом? + +– НСт, я своим ΡƒΠΌΠΎΠΌ дошСл Π΄ΠΎ этого. + +– И Ρ‚Ρ‹ ΠΏΡ€ΠΎΠΏΠΎΠ²Π΅Π΄ΡƒΠ΅ΡˆΡŒ это? + +– Π”Π°. + +– А Π²ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ΅Π½Ρ‚ΡƒΡ€ΠΈΠΎΠ½ ΠœΠ°Ρ€ΠΊ, Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ·Π²Π°Π»ΠΈ ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΠ΅ΠΌ, – ΠΎΠ½ – Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ? + +– Π”Π°, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант, – ΠΎΠ½, ΠΏΡ€Π°Π²Π΄Π°, нСсчастливый Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Ρ€Ρ‹Π΅ люди ΠΈΠ·ΡƒΡ€ΠΎΠ΄ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ, ΠΎΠ½ стал ТСсток ΠΈ чСрств. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Π±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΊΡ‚ΠΎ Π΅Π³ΠΎ искалСчил. + +– ΠžΡ…ΠΎΡ‚Π½ΠΎ ΠΌΠΎΠ³Ρƒ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ это, – отозвался ΠŸΠΈΠ»Π°Ρ‚, – ΠΈΠ±ΠΎ я Π±Ρ‹Π» свидСтСлСм этого. Π”ΠΎΠ±Ρ€Ρ‹Π΅ люди Π±Ρ€ΠΎΡΠ°Π»ΠΈΡΡŒ Π½Π° Π½Π΅Π³ΠΎ, ΠΊΠ°ΠΊ собаки Π½Π° мСдвСдя. Π“Π΅Ρ€ΠΌΠ°Π½Ρ†Ρ‹ Π²Ρ†Π΅ΠΏΠΈΠ»ΠΈΡΡŒ Π΅ΠΌΡƒ Π² шСю, Π² Ρ€ΡƒΠΊΠΈ, Π² Π½ΠΎΠ³ΠΈ. ΠŸΠ΅Ρ…ΠΎΡ‚Π½Ρ‹ΠΉ ΠΌΠ°Π½ΠΈΠΏΡƒΠ» ΠΏΠΎΠΏΠ°Π» Π² мСшок, ΠΈ Ссли Π±Ρ‹ Π½Π΅ Π²Ρ€ΡƒΠ±ΠΈΠ»Π°ΡΡŒ с Ρ„Π»Π°Π½Π³Π° кавалСрийская Ρ‚ΡƒΡ€ΠΌΠ°, Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠ²Π°Π» Сю я, – Ρ‚Π΅Π±Π΅, философ, Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ с ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΠ΅ΠΌ. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π² бою ΠΏΡ€ΠΈ Π˜Π΄ΠΈΡΡ‚Π°Π²ΠΈΠ·ΠΎ, Π² Π΄ΠΎΠ»ΠΈΠ½Π΅ Π”Π΅Π². + +– Если Π±Ρ‹ с Π½ΠΈΠΌ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, – Π²Π΄Ρ€ΡƒΠ³ ΠΌΠ΅Ρ‡Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сказал арСстант, – я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π΅Π·ΠΊΠΎ измСнился Π±Ρ‹. + +– Π― полагаю, – отозвался ΠŸΠΈΠ»Π°Ρ‚, – Ρ‡Ρ‚ΠΎ ΠΌΠ°Π»ΠΎ радости Ρ‚Ρ‹ доставил Π±Ρ‹ Π»Π΅Π³Π°Ρ‚Ρƒ Π»Π΅Π³ΠΈΠΎΠ½Π°, Ссли Π±Ρ‹ Π²Π·Π΄ΡƒΠΌΠ°Π» Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ с ΠΊΠ΅ΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ· Π΅Π³ΠΎ ΠΎΡ„ΠΈΡ†Π΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ солдат. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, этого ΠΈ Π½Π΅ случится, ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, ΠΊΡ‚ΠΎ ΠΎΠ± этом позаботится, Π±ΡƒΠ΄Ρƒ я. + +Π’ это врСмя Π² ΠΊΠΎΠ»ΠΎΠ½Π½Π°Π΄Ρƒ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π»Π΅Ρ‚Π΅Π»Π° ласточка, сдСлала ΠΏΠΎΠ΄ Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠ»ΠΊΠΎΠΌ ΠΊΡ€ΡƒΠ³, снизилась, Ρ‡ΡƒΡ‚ΡŒ Π½Π΅ Π·Π°Π΄Π΅Π»Π° острым ΠΊΡ€Ρ‹Π»ΠΎΠΌ Π»ΠΈΡ†Π° ΠΌΠ΅Π΄Π½ΠΎΠΉ статуи Π² нишС ΠΈ ΡΠΊΡ€Ρ‹Π»Π°ΡΡŒ Π·Π° ΠΊΠ°ΠΏΠΈΡ‚Π΅Π»ΡŒΡŽ ΠΊΠΎΠ»ΠΎΠ½Π½Ρ‹. Π‘Ρ‹Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚, Π΅ΠΉ ΠΏΡ€ΠΈΡˆΠ»Π° ΠΌΡ‹ΡΠ»ΡŒ, Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΌ Π³Π½Π΅Π·Π΄ΠΎ. + +Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΅Π΅ ΠΏΠΎΠ»Π΅Ρ‚Π° Π² свСтлой Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈ Π»Π΅Π³ΠΊΠΎΠΉ Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° слоТилась Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°. Она Π±Ρ‹Π»Π° Ρ‚Π°ΠΊΠΎΠ²Π°: ΠΈΠ³Π΅ΠΌΠΎΠ½ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π» Π΄Π΅Π»ΠΎ бродячСго философа Π˜Π΅ΡˆΡƒΠ° ΠΏΠΎ ΠΊΠ»ΠΈΡ‡ΠΊΠ΅ Π“Π°-Ноцри, ΠΈ состава прСступлСния Π² Π½Π΅ΠΌ Π½Π΅ нашСл. Π’ частности, Π½Π΅ нашСл Π½ΠΈ малСйшСй связи ΠΌΠ΅ΠΆΠ΄Ρƒ дСйствиями Π˜Π΅ΡˆΡƒΠ° ΠΈ бСспорядками, ΠΏΡ€ΠΎΠΈΡΡˆΠ΅Π΄ΡˆΠΈΠΌΠΈ Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ΅ Π½Π΅Π΄Π°Π²Π½ΠΎ. Бродячий философ оказался Π΄ΡƒΡˆΠ΅Π²Π½ΠΎΠ±ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ. ВслСдствиС этого смСртный ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€ Π“Π°-Ноцри, вынСсСнный ΠœΠ°Π»Ρ‹ΠΌ Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½ΠΎΠΌ, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚. Но Π²Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Π΅Π·ΡƒΠΌΠ½Ρ‹Π΅, утопичСскиС Ρ€Π΅Ρ‡ΠΈ Π“Π°-Ноцри ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΡŽ Π²ΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ΅, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ удаляСт Π˜Π΅ΡˆΡƒΠ° ΠΈΠ· Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ° ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Π΅Ρ‚ Π΅Π³ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ Π² ΠšΠ΅ΡΠ°Ρ€ΠΈΠΈ Π‘Ρ‚Ρ€Π°Ρ‚ΠΎΠ½ΠΎΠ²ΠΎΠΉ Π½Π° Π‘Ρ€Π΅Π΄ΠΈΠ·Π΅ΠΌΠ½ΠΎΠΌ ΠΌΠΎΡ€Π΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ, Π³Π΄Π΅ рСзидСнция ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π°. + +ΠžΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ это ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŽ. + +ΠšΡ€Ρ‹Π»ΡŒΡ ласточки Ρ„Ρ‹Ρ€ΠΊΠ½ΡƒΠ»ΠΈ Π½Π°Π΄ самой Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ ΠΈΠ³Π΅ΠΌΠΎΠ½Π°, ΠΏΡ‚ΠΈΡ†Π° ΠΌΠ΅Ρ‚Π½ΡƒΠ»Π°ΡΡŒ ΠΊ Ρ‡Π°ΡˆΠ΅ Ρ„ΠΎΠ½Ρ‚Π°Π½Π° ΠΈ Π²Ρ‹Π»Π΅Ρ‚Π΅Π»Π° Π½Π° волю. ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ поднял Π³Π»Π°Π·Π° Π½Π° арСстанта ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π»Π΅ Ρ‚ΠΎΠ³ΠΎ столбом Π·Π°Π³ΠΎΡ€Π΅Π»Π°ΡΡŒ ΠΏΡ‹Π»ΡŒ. + +– ВсС ΠΎ Π½Π΅ΠΌ? – спросил ΠŸΠΈΠ»Π°Ρ‚ Ρƒ сСкрСтаря. + +– НСт, ΠΊ соТалСнию, – Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ ΠΈ ΠΏΠΎΠ΄Π°Π» ΠŸΠΈΠ»Π°Ρ‚Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ кусок ΠΏΠ΅Ρ€Π³Π°ΠΌΠ΅Π½Ρ‚Π°. + +– Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ Ρ‚Π°ΠΌ? – спросил ΠŸΠΈΠ»Π°Ρ‚ ΠΈ нахмурился. + +ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² ΠΏΠΎΠ΄Π°Π½Π½ΠΎΠ΅, ΠΎΠ½ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ измСнился Π² Π»ΠΈΡ†Π΅. ВСмная Π»ΠΈ ΠΊΡ€ΠΎΠ²ΡŒ ΠΏΡ€ΠΈΠ»ΠΈΠ»Π° ΠΊ шСС ΠΈ Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΆΠ° Π΅Π³ΠΎ ΡƒΡ‚Ρ€Π°Ρ‚ΠΈΠ»Π° ΠΆΠ΅Π»Ρ‚ΠΈΠ·Π½Ρƒ, ΠΏΠΎΠ±ΡƒΡ€Π΅Π»Π°, Π° Π³Π»Π°Π·Π° ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»ΠΈΡΡŒ. + +ΠžΠΏΡΡ‚ΡŒ-Ρ‚Π°ΠΊΠΈ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚Π° Π±Ρ‹Π»Π°, вСроятно, ΠΊΡ€ΠΎΠ²ΡŒ, ΠΏΡ€ΠΈΠ»ΠΈΠ²ΡˆΠ°Ρ ΠΊ вискам ΠΈ Π·Π°ΡΡ‚ΡƒΡ‡Π°Π²ΡˆΠ°Ρ Π² Π½ΠΈΡ…, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ со Π·Ρ€Π΅Π½ΠΈΠ΅ΠΌ. Π’Π°ΠΊ, ΠΏΠΎΠΌΠ΅Ρ€Π΅Ρ‰ΠΈΠ»ΠΎΡΡŒ Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ»ΠΎΠ²Π° арСстанта ΡƒΠΏΠ»Ρ‹Π»Π° ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ, Π° вмСсто Π½Π΅Π΅ появилась другая. На этой плСшивой Π³ΠΎΠ»ΠΎΠ²Π΅ сидСл Ρ€Π΅Π΄ΠΊΠΎΠ·ΡƒΠ±Ρ‹ΠΉ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ Π²Π΅Π½Π΅Ρ†; Π½Π° Π»Π±Ρƒ Π±Ρ‹Π»Π° круглая язва, Ρ€Π°Π·ΡŠΠ΅Π΄Π°ΡŽΡ‰Π°Ρ ΠΊΠΎΠΆΡƒ ΠΈ смазанная мазью; запавший Π±Π΅Π·Π·ΡƒΠ±Ρ‹ΠΉ Ρ€ΠΎΡ‚ с ΠΎΡ‚Π²ΠΈΡΡˆΠ΅ΠΉ Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΊΠ°ΠΏΡ€ΠΈΠ·Π½ΠΎΡŽ Π³ΡƒΠ±ΠΎΠΉ. ΠŸΠΈΠ»Π°Ρ‚Ρƒ показалось, Ρ‡Ρ‚ΠΎ исчСзли Ρ€ΠΎΠ·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½Π½Ρ‹ Π±Π°Π»ΠΊΠΎΠ½Π° ΠΈ ΠΊΡ€ΠΎΠ²Π»ΠΈ Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ° Π²Π΄Π°Π»ΠΈ, Π²Π½ΠΈΠ·Ρƒ Π·Π° садом, ΠΈ всС ΡƒΡ‚ΠΎΠ½ΡƒΠ»ΠΎ Π²ΠΎΠΊΡ€ΡƒΠ³ Π² Π³ΡƒΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ Π·Π΅Π»Π΅Π½ΠΈ ΠšΠ°ΠΏΡ€Π΅ΠΉΡΠΊΠΈΡ… садов. И со слухом ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ»ΠΎΡΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ странноС, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π²Π΄Π°Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π»ΠΈ Π½Π΅Π³Ρ€ΠΎΠΌΠΊΠΎ ΠΈ Π³Ρ€ΠΎΠ·Π½ΠΎ Ρ‚Ρ€ΡƒΠ±Ρ‹ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ явствСнно ΠΏΠΎΡΠ»Ρ‹ΡˆΠ°Π»ΡΡ носовой голос, Π½Π°Π΄ΠΌΠ΅Π½Π½ΠΎ тянущий слова: Β«Π—Π°ΠΊΠΎΠ½ ΠΎΠ± оскорблСнии вСличСства...Β» + +ΠœΡ‹ΡΠ»ΠΈ понСслись ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅, бСссвязныС ΠΈ Π½Π΅ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½Ρ‹Π΅: «Погиб!Β», ΠΏΠΎΡ‚ΠΎΠΌ: «Погибли!..Β» И какая-Ρ‚ΠΎ совсСм нСлСпая срСди Π½ΠΈΡ… ΠΎ ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π±Ρ‹Ρ‚ΡŒ – ΠΈ с ΠΊΠ΅ΠΌ?! – бСссмСртии, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ бСссмСртиС ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΎ Π½Π΅ΡΡ‚Π΅Ρ€ΠΏΠΈΠΌΡƒΡŽ тоску. + +ΠŸΠΈΠ»Π°Ρ‚ напрягся, ΠΈΠ·Π³Π½Π°Π» Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅, вСрнулся Π²Π·ΠΎΡ€ΠΎΠΌ Π½Π° Π±Π°Π»ΠΊΠΎΠ½, ΠΈ ΠΎΠΏΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ оказались Π³Π»Π°Π·Π° арСстанта. + +– Π‘Π»ΡƒΡˆΠ°ΠΉ, Π“Π°-Ноцри, – Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, глядя Π½Π° Π˜Π΅ΡˆΡƒΠ° ΠΊΠ°ΠΊ-Ρ‚ΠΎ странно: Π»ΠΈΡ†ΠΎ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° Π±Ρ‹Π»ΠΎ Π³Ρ€ΠΎΠ·Π½ΠΎ, Π½ΠΎ Π³Π»Π°Π·Π° Ρ‚Ρ€Π΅Π²ΠΎΠΆΠ½Ρ‹, – Ρ‚Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎ Π²Π΅Π»ΠΈΠΊΠΎΠΌ кСсарС? ΠžΡ‚Π²Π΅Ρ‡Π°ΠΉ! Π“ΠΎΠ²ΠΎΡ€ΠΈΠ»?.. Или... Π½Π΅... Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»? – ΠŸΠΈΠ»Π°Ρ‚ протянул слово Β«Π½Π΅Β» нСсколько большС, Ρ‡Π΅ΠΌ это полагаСтся Π½Π° судС, ΠΈ послал Π˜Π΅ΡˆΡƒΠ° Π² своСм взглядС ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΌΡ‹ΡΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΊΠ°ΠΊ Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Π²Π½ΡƒΡˆΠΈΡ‚ΡŒ арСстанту. + +– ΠŸΡ€Π°Π²Π΄Ρƒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈ приятно, – Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» арСстант. + +– МнС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, – ΠΏΡ€ΠΈΠ΄ΡƒΡˆΠ΅Π½Π½Ρ‹ΠΌ, Π·Π»Ρ‹ΠΌ голосом отозвался ΠŸΠΈΠ»Π°Ρ‚, – приятно ΠΈΠ»ΠΈ нСприятно Ρ‚Π΅Π±Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π΄Ρƒ. Но Ρ‚Π΅Π±Π΅ придСтся Π΅Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ. Но, говоря, взвСшивай ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово, Ссли Π½Π΅ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎΠΉ, Π½ΠΎ ΠΈ ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ смСрти. + +Никто Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ с ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π˜ΡƒΠ΄Π΅ΠΈ, Π½ΠΎ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» сСбС ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ Ρ€ΡƒΠΊΡƒ, ΠΊΠ°ΠΊ Π±Ρ‹ заслоняясь ΠΎΡ‚ солнСчного Π»ΡƒΡ‡Π°, ΠΈ Π·Π° этой Ρ€ΡƒΠΊΠΎΠΉ, ΠΊΠ°ΠΊ Π·Π° Ρ‰ΠΈΡ‚ΠΎΠΌ, ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ арСстанту ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π½Π°ΠΌΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠΉ Π²Π·ΠΎΡ€. + +– Π˜Ρ‚Π°ΠΊ, – Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΎΠ½, – ΠΎΡ‚Π²Π΅Ρ‡Π°ΠΉ, знаСшь Π»ΠΈ Ρ‚Ρ‹ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ Π˜ΡƒΠ΄Ρƒ ΠΈΠ· ΠšΠΈΡ€ΠΈΠ°Ρ„Π°, ΠΈ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π΅ΠΌΡƒ, Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», ΠΎ кСсарС? + +– Π”Π΅Π»ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊ, – ΠΎΡ…ΠΎΡ‚Π½ΠΎ Π½Π°Ρ‡Π°Π» Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ арСстант, – ΠΏΠΎΠ·Π°Π²Ρ‡Π΅Ρ€Π° Π²Π΅Ρ‡Π΅Ρ€ΠΎΠΌ я познакомился Π²ΠΎΠ·Π»Π΅ Ρ…Ρ€Π°ΠΌΠ° с ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠΎΠ»ΠΎΠ΄Ρ‹ΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π·Π²Π°Π» сСбя Π˜ΡƒΠ΄ΠΎΠΉ ΠΈΠ· Π³ΠΎΡ€ΠΎΠ΄Π° ΠšΠΈΡ€ΠΈΠ°Ρ„Π°. Он пригласил мСня ΠΊ сСбС Π² Π΄ΠΎΠΌ Π² НиТнСм Π“ΠΎΡ€ΠΎΠ΄Π΅ ΠΈ угостил... + +– Π”ΠΎΠ±Ρ€Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ? – спросил ΠŸΠΈΠ»Π°Ρ‚, ΠΈ дьявольский огонь свСркнул Π² Π΅Π³ΠΎ Π³Π»Π°Π·Π°Ρ…. + +– ΠžΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ ΠΈ Π»ΡŽΠ±ΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, – ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» арСстант, – ΠΎΠ½ высказал Π²Π΅Π»ΠΈΡ‡Π°ΠΉΡˆΠΈΠΉ интСрСс ΠΊ ΠΌΠΎΠΈΠΌ мыслям, принял мСня вСсьма Ρ€Π°Π΄ΡƒΡˆΠ½ΠΎ... + +– Π‘Π²Π΅Ρ‚ΠΈΠ»ΡŒΠ½ΠΈΠΊΠΈ Π·Π°ΠΆΠ΅Π³... – сквозь Π·ΡƒΠ±Ρ‹ Π² Ρ‚ΠΎΠ½ арСстанту ΠΏΡ€ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠŸΠΈΠ»Π°Ρ‚, ΠΈ Π³Π»Π°Π·Π° Π΅Π³ΠΎ ΠΏΡ€ΠΈ этом ΠΌΠ΅Ρ€Ρ†Π°Π»ΠΈ. + +– Π”Π°, – Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΠ²ΡˆΠΈΡΡŒ освСдомлСнности ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π°, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Π˜Π΅ΡˆΡƒΠ°, – попросил мСня Π²Ρ‹ΡΠΊΠ°Π·Π°Ρ‚ΡŒ свой взгляд Π½Π° Π³ΠΎΡΡƒΠ΄Π°Ρ€ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π»Π°ΡΡ‚ΡŒ. Π•Π³ΠΎ этот вопрос Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ интСрСсовал. + +– И Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Ρ‹ сказал? – спросил ΠŸΠΈΠ»Π°Ρ‚, – ΠΈΠ»ΠΈ Ρ‚Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡˆΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ Π·Π°Π±Ρ‹Π», Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»? – Π½ΠΎ Π² Ρ‚ΠΎΠ½Π΅ ΠŸΠΈΠ»Π°Ρ‚Π° Π±Ρ‹Π»Π° ΡƒΠΆΠ΅ Π±Π΅Π·Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ. + +– Π’ числС ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», – рассказывал арСстант, – Ρ‡Ρ‚ΠΎ всякая Π²Π»Π°ΡΡ‚ΡŒ являСтся насилиСм Π½Π°Π΄ людьми ΠΈ Ρ‡Ρ‚ΠΎ настанСт врСмя, ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ власти Π½ΠΈ кСсарСй, Π½ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ½ΠΎΠΉ власти. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ Π² царство истины ΠΈ справСдливости, Π³Π΄Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π΄ΠΎΠ±Π½Π° никакая Π²Π»Π°ΡΡ‚ΡŒ. + +– Π”Π°Π»Π΅Π΅! + +– Π”Π°Π»Π΅Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ, – сказал арСстант, – Ρ‚ΡƒΡ‚ Π²Π±Π΅ΠΆΠ°Π»ΠΈ люди, стали мСня Π²ΡΠ·Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ²Π΅Π»ΠΈ Π² Ρ‚ΡŽΡ€ΡŒΠΌΡƒ. + +Π‘Π΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ, ΡΡ‚Π°Ρ€Π°ΡΡΡŒ Π½Π΅ ΠΏΡ€ΠΎΡ€ΠΎΠ½ΠΈΡ‚ΡŒ Π½ΠΈ слова, быстро Ρ‡Π΅Ρ€Ρ‚ΠΈΠ» Π½Π° ΠΏΠ΅Ρ€Π³Π°ΠΌΠ΅Π½Ρ‚Π΅ слова. + +– На свСтС Π½Π΅ Π±Ρ‹Π»ΠΎ, Π½Π΅Ρ‚ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π±ΠΎΠ»Π΅Π΅ Π²Π΅Π»ΠΈΠΊΠΎΠΉ ΠΈ прСкрасной для людСй власти, Ρ‡Π΅ΠΌ Π²Π»Π°ΡΡ‚ΡŒ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ВивСрия! – сорванный ΠΈ больной голос ΠŸΠΈΠ»Π°Ρ‚Π° разросся. + +ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ с Π½Π΅Π½Π°Π²ΠΈΡΡ‚ΡŒΡŽ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ глядСл Π½Π° сСкрСтаря ΠΈ ΠΊΠΎΠ½Π²ΠΎΠΉ. + + +– И Π½Π΅ Ρ‚Π΅Π±Π΅, Π±Π΅Π·ΡƒΠΌΠ½Ρ‹ΠΉ прСступник, Ρ€Π°ΡΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΉ! – Ρ‚ΡƒΡ‚ ΠŸΠΈΠ»Π°Ρ‚ вскричал: – ВывСсти ΠΊΠΎΠ½Π²ΠΎΠΉ с Π±Π°Π»ΠΊΠΎΠ½Π°! – ΠΈ, ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΠ²ΡˆΠΈΡΡŒ ΠΊ ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŽ, Π΄ΠΎΠ±Π°Π²ΠΈΠ»: – ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ мСня с прСступником Π½Π°Π΅Π΄ΠΈΠ½Π΅, здСсь государствСнноС Π΄Π΅Π»ΠΎ. + +Конвой поднял копья ΠΈ, ΠΌΠ΅Ρ€Π½ΠΎ стуча ΠΏΠΎΠ΄ΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π»ΠΈΠ³Π°ΠΌΠΈ, Π²Ρ‹ΡˆΠ΅Π» с Π±Π°Π»ΠΊΠΎΠ½Π° Π² сад, Π° Π·Π° ΠΊΠΎΠ½Π²ΠΎΠ΅ΠΌ Π²Ρ‹ΡˆΠ΅Π» ΠΈ ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ. + +ΠœΠΎΠ»Ρ‡Π°Π½ΠΈΠ΅ Π½Π° Π±Π°Π»ΠΊΠΎΠ½Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π°Ρ€ΡƒΡˆΠ°Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСсня Π²ΠΎΠ΄Ρ‹ Π² Ρ„ΠΎΠ½Ρ‚Π°Π½Π΅. ΠŸΠΈΠ»Π°Ρ‚ Π²ΠΈΠ΄Π΅Π», ΠΊΠ°ΠΊ Π²Π·Π΄ΡƒΠ²Π°Π»Π°ΡΡŒ Π½Π°Π΄ Ρ‚Ρ€ΡƒΠ±ΠΎΡ‡ΠΊΠΎΠΉ водяная Ρ‚Π°Ρ€Π΅Π»ΠΊΠ°, ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°ΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ Π΅Π΅ края, ΠΊΠ°ΠΊ ΠΏΠ°Π΄Π°Π»ΠΈ струйками. + +ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» арСстант: + +– Π― Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ какая-Ρ‚ΠΎ Π±Π΅Π΄Π° ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» с этим юношСй ΠΈΠ· ΠšΠΈΡ€ΠΈΠ°Ρ„Π°. Π£ мСня, ΠΈΠ³Π΅ΠΌΠΎΠ½, Π΅ΡΡ‚ΡŒ прСдчувствиС, Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌ случится Π½Π΅ΡΡ‡Π°ΡΡ‚ΡŒΠ΅, ΠΈ ΠΌΠ½Π΅ Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Таль. + +– Π― Π΄ΡƒΠΌΠ°ΡŽ, – странно ΡƒΡΠΌΠ΅Ρ…Π½ΡƒΠ²ΡˆΠΈΡΡŒ, ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, – Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-ΠΊΡ‚ΠΎ Π½Π° свСтС, ΠΊΠΎΠ³ΠΎ Ρ‚Π΅Π±Π΅ слСдовало Π±Ρ‹ ΠΏΠΎΠΆΠ°Π»Π΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ Π˜ΡƒΠ΄Ρƒ ΠΈΠ· ΠšΠΈΡ€ΠΈΠ°Ρ„Π°, ΠΈ ΠΊΠΎΠΌΡƒ придСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ Π˜ΡƒΠ΄Π΅! Π˜Ρ‚Π°ΠΊ, ΠœΠ°Ρ€ΠΊ ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΠΉ, Ρ…ΠΎΠ»ΠΎΠ΄Π½Ρ‹ΠΉ ΠΈ ΡƒΠ±Π΅ΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ°Π»Π°Ρ‡, люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ я Π²ΠΈΠΆΡƒ, – ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΡƒΠΊΠ°Π·Π°Π» Π½Π° ΠΈΠ·ΡƒΡ€ΠΎΠ΄ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π»ΠΈΡ†ΠΎ Π˜Π΅ΡˆΡƒΠ°, – тСбя Π±ΠΈΠ»ΠΈ Π·Π° Ρ‚Π²ΠΎΠΈ ΠΏΡ€ΠΎΠΏΠΎΠ²Π΅Π΄ΠΈ, Ρ€Π°Π·Π±ΠΎΠΉΠ½ΠΈΠΊΠΈ Дисмас ΠΈ ГСстас, ΡƒΠ±ΠΈΠ²ΡˆΠΈΠ΅ со своими присными Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… солдат, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, грязный ΠΏΡ€Π΅Π΄Π°Ρ‚Π΅Π»ΡŒ Π˜ΡƒΠ΄Π° – всС ΠΎΠ½ΠΈ Π΄ΠΎΠ±Ρ€Ρ‹Π΅ люди? + +– Π”Π°, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» арСстант. + +– И настанСт царство истины? + +– НастанСт, ΠΈΠ³Π΅ΠΌΠΎΠ½, – ΡƒΠ±Π΅ΠΆΠ΄Π΅Π½Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π˜Π΅ΡˆΡƒΠ°. + +– Оно Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ настанСт! – Π²Π΄Ρ€ΡƒΠ³ Π·Π°ΠΊΡ€ΠΈΡ‡Π°Π» ΠŸΠΈΠ»Π°Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹ΠΌ голосом, Ρ‡Ρ‚ΠΎ Π˜Π΅ΡˆΡƒΠ° ΠΎΡ‚ΡˆΠ°Ρ‚Π½ΡƒΠ»ΡΡ. Π’Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ Ρ‚ΠΎΠΌΡƒ Π½Π°Π·Π°Π΄ Π² Π΄ΠΎΠ»ΠΈΠ½Π΅ Π΄Π΅Π² ΠΊΡ€ΠΈΡ‡Π°Π» ΠŸΠΈΠ»Π°Ρ‚ своим всадникам слова: Β«Π ΡƒΠ±ΠΈ ΠΈΡ…! Π ΡƒΠ±ΠΈ ΠΈΡ…! Π’Π΅Π»ΠΈΠΊΠ°Π½ ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΠΉ попался!Β» Он Π΅Ρ‰Π΅ повысил сорванный ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ голос, выкликая слова Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ Π² саду: – ΠŸΡ€Π΅ΡΡ‚ΡƒΠΏΠ½ΠΈΠΊ! ΠŸΡ€Π΅ΡΡ‚ΡƒΠΏΠ½ΠΈΠΊ! ΠŸΡ€Π΅ΡΡ‚ΡƒΠΏΠ½ΠΈΠΊ! + +А Π·Π°Ρ‚Π΅ΠΌ, ΠΏΠΎΠ½ΠΈΠ·ΠΈΠ² голос, ΠΎΠ½ спросил: + +– Π˜Π΅ΡˆΡƒΠ° Π“Π°-Ноцри, Π²Π΅Ρ€ΠΈΡˆΡŒ Π»ΠΈ Ρ‚Ρ‹ Π² ΠΊΠ°ΠΊΠΈΡ…-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±ΠΎΠ³ΠΎΠ²? + +– Π‘ΠΎΠ³ ΠΎΠ΄ΠΈΠ½, – ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π˜Π΅ΡˆΡƒΠ°, – Π² Π½Π΅Π³ΠΎ я Π²Π΅Ρ€ΡŽ. + +– Π’Π°ΠΊ помолись Π΅ΠΌΡƒ! ΠŸΠΎΠΊΡ€Π΅ΠΏΡ‡Π΅ помолись! Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, – Ρ‚ΡƒΡ‚ голос ΠŸΠΈΠ»Π°Ρ‚Π° сСл, – это Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚. Π–Π΅Π½Ρ‹ Π½Π΅Ρ‚? – ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ тоскливо спросил ΠŸΠΈΠ»Π°Ρ‚, Π½Π΅ понимая, Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌ происходит. + +– НСт, я ΠΎΠ΄ΠΈΠ½. + +– НСнавистный Π³ΠΎΡ€ΠΎΠ΄, – Π²Π΄Ρ€ΡƒΠ³ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±ΠΎΡ€ΠΌΠΎΡ‚Π°Π» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π΅Ρ€Π½ΡƒΠ» ΠΏΠ»Π΅Ρ‡Π°ΠΌΠΈ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ озяб, Π° Ρ€ΡƒΠΊΠΈ ΠΏΠΎΡ‚Π΅Ρ€, ΠΊΠ°ΠΊ Π±Ρ‹ обмывая ΠΈΡ…, – Ссли Π±Ρ‹ тСбя Π·Π°Ρ€Π΅Π·Π°Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π²ΠΎΠΈΠΌ свиданиСм с Π˜ΡƒΠ΄ΠΎΡŽ ΠΈΠ· ΠšΠΈΡ€ΠΈΠ°Ρ„Π°, ΠΏΡ€Π°Π²ΠΎ, это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅. + +– А Ρ‚Ρ‹ Π±Ρ‹ мСня отпустил, ΠΈΠ³Π΅ΠΌΠΎΠ½, – Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ попросил арСстант, ΠΈ голос Π΅Π³ΠΎ стал Ρ‚Ρ€Π΅Π²ΠΎΠΆΠ΅Π½, – я Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ мСня хотят ΡƒΠ±ΠΈΡ‚ΡŒ. + +Π›ΠΈΡ†ΠΎ ΠŸΠΈΠ»Π°Ρ‚Π° исказилось судорогой, ΠΎΠ½ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ» ΠΊ Π˜Π΅ΡˆΡƒΠ° воспалСнныС, Π² красных ΠΆΠΈΠ»ΠΊΠ°Ρ… Π±Π΅Π»ΠΊΠΈ Π³Π»Π°Π· ΠΈ сказал: + +– Π’Ρ‹ полагаСшь, нСсчастный, Ρ‡Ρ‚ΠΎ римский ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ отпустит Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π³ΠΎΠ²ΠΎΡ€ΠΈΠ²ΡˆΠ΅Π³ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Ρ‚Ρ‹? О, Π±ΠΎΠ³ΠΈ, Π±ΠΎΠ³ΠΈ! Или Ρ‚Ρ‹ Π΄ΡƒΠΌΠ°Π΅ΡˆΡŒ, Ρ‡Ρ‚ΠΎ я Π³ΠΎΡ‚ΠΎΠ² Π·Π°Π½ΡΡ‚ΡŒ Ρ‚Π²ΠΎΠ΅ мСсто? Π― Ρ‚Π²ΠΎΠΈΡ… мыслСй Π½Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽ! И ΡΠ»ΡƒΡˆΠ°ΠΉ мСня: Ссли с этой ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Ρ‚Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π½Π΅ΡΠ΅ΡˆΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ слово, Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΡˆΡŒ с ΠΊΠ΅ΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, Π±Π΅Ρ€Π΅Π³ΠΈΡΡŒ мСня! ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽ Ρ‚Π΅Π±Π΅: Π±Π΅Ρ€Π΅Π³ΠΈΡΡŒ. + +– ИгСмон... + +– ΠœΠΎΠ»Ρ‡Π°Ρ‚ΡŒ! – вскричал ΠŸΠΈΠ»Π°Ρ‚ ΠΈ Π±Π΅ΡˆΠ΅Π½Ρ‹ΠΌ Π²Π·ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ» ласточку, ΠΎΠΏΡΡ‚ΡŒ Π²ΠΏΠΎΡ€Ρ…Π½ΡƒΠ²ΡˆΡƒΡŽ Π½Π° Π±Π°Π»ΠΊΠΎΠ½. – Ко ΠΌΠ½Π΅! – ΠΊΡ€ΠΈΠΊΠ½ΡƒΠ» ΠŸΠΈΠ»Π°Ρ‚. + +И ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ ΠΈ ΠΊΠΎΠ½Π²ΠΎΠΉ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ Π½Π° свои мСста, ΠŸΠΈΠ»Π°Ρ‚ объявил, Ρ‡Ρ‚ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ смСртный ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€, вынСсСнный Π² собрании Малого Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½Π° прСступнику Π˜Π΅ΡˆΡƒΠ° Π“Π°-Ноцри, ΠΈ ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ записал сказанноС ΠŸΠΈΠ»Π°Ρ‚ΠΎΠΌ. + +Π§Π΅Ρ€Π΅Π· ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ стоял ΠœΠ°Ρ€ΠΊ ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΠΉ. Π•ΠΌΡƒ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π» ΡΠ΄Π°Ρ‚ΡŒ прСступника Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΈΠΊΡƒ Ρ‚Π°ΠΉΠ½ΠΎΠΉ слуТбы ΠΈ ΠΏΡ€ΠΈ этом ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ распоряТСниС ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π˜Π΅ΡˆΡƒΠ° Π“Π°-Ноцри Π±Ρ‹Π» ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… осуТдСнных, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ‚Π°ΠΉΠ½ΠΎΠΉ слуТбы Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄ страхом тяТкой ΠΊΠ°Ρ€Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΎ Ρ‡Π΅ΠΌ Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ с Π˜Π΅ΡˆΡƒΠ° ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ вопросы. + +По Π·Π½Π°ΠΊΡƒ ΠœΠ°Ρ€ΠΊΠ° Π²ΠΎΠΊΡ€ΡƒΠ³ Π˜Π΅ΡˆΡƒΠ° сомкнулся ΠΊΠΎΠ½Π²ΠΎΠΉ ΠΈ Π²Ρ‹Π²Π΅Π» Π΅Π³ΠΎ с Π±Π°Π»ΠΊΠΎΠ½Π°. + +Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ прСдстал стройный, свСтлобородый красавСц со ΡΠ²Π΅Ρ€ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ Π½Π° Π³Ρ€ΡƒΠ΄ΠΈ Π»ΡŒΠ²ΠΈΠ½Ρ‹ΠΌΠΈ ΠΌΠΎΡ€Π΄Π°ΠΌΠΈ, с ΠΎΡ€Π»ΠΈΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€ΡŒΡΠΌΠΈ Π½Π° Π³Ρ€Π΅Π±Π½Π΅ шлСма, с Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌΠΈ бляшками Π½Π° ΠΏΠΎΡ€Ρ‚ΡƒΠΏΠ΅Π΅ ΠΌΠ΅Ρ‡Π°, Π² Π·Π°ΡˆΠ½ΡƒΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄ΠΎ ΠΊΠΎΠ»Π΅Π½ ΠΎΠ±ΡƒΠ²ΠΈ Π½Π° Ρ‚Ρ€ΠΎΠΉΠ½ΠΎΠΉ подошвС, Π² Π½Π°Π±Ρ€ΠΎΡˆΠ΅Π½Π½ΠΎΠΌ Π½Π° Π»Π΅Π²ΠΎΠ΅ ΠΏΠ»Π΅Ρ‡ΠΎ багряном ΠΏΠ»Π°Ρ‰Π΅. Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΊΠΎΠΌΠ°Π½Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π»Π΅Π³ΠΈΠΎΠ½ΠΎΠΌ Π»Π΅Π³Π°Ρ‚. Π•Π³ΠΎ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ спросил ΠΎ Ρ‚ΠΎΠΌ, Π³Π΄Π΅ сСйчас находится сСбастийская ΠΊΠΎΠ³ΠΎΡ€Ρ‚Π°. Π›Π΅Π³Π°Ρ‚ сообщил, Ρ‡Ρ‚ΠΎ сСбастийцы Π΄Π΅Ρ€ΠΆΠ°Ρ‚ ΠΎΡ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π³ΠΈΠΏΠΏΠΎΠ΄Ρ€ΠΎΠΌΠΎΠΌ, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ объявлСн Π½Π°Ρ€ΠΎΠ΄Ρƒ ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€ Π½Π°Π΄ прСступниками. + +Π’ΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ распорядился, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»Π΅Π³Π°Ρ‚ Π²Ρ‹Π΄Π΅Π»ΠΈΠ» ΠΈΠ· римской ΠΊΠΎΠ³ΠΎΡ€Ρ‚Ρ‹ Π΄Π²Π΅ ΠΊΠ΅Π½Ρ‚ΡƒΡ€ΠΈΠΈ. Одна ΠΈΠ· Π½ΠΈΡ…, ΠΏΠΎΠ΄ командою ΠšΡ€Ρ‹ΡΠΎΠ±ΠΎΡ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Π²ΠΎΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прСступников, ΠΏΠΎΠ²ΠΎΠ·ΠΊΠΈ с приспособлСниями для ΠΊΠ°Π·Π½ΠΈ ΠΈ ΠΏΠ°Π»Π°Ρ‡Π΅ΠΉ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π½Π° Π›Ρ‹ΡΡƒΡŽ Π“ΠΎΡ€Ρƒ, Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ±Ρ‹Ρ‚ΠΈΠΈ Π½Π° Π½Π΅Π΅ Π²ΠΎΠΉΡ‚ΠΈ Π² Π²Π΅Ρ€Ρ…Π½Π΅Π΅ ΠΎΡ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅. Другая ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ сСйчас ΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π½Π° Π›Ρ‹ΡΡƒΡŽ Π“ΠΎΡ€Ρƒ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΎΡ†Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Для этой ΠΆΠ΅ Ρ†Π΅Π»ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ для ΠΎΡ…Ρ€Π°Π½Ρ‹ Π“ΠΎΡ€Ρ‹, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ попросил Π»Π΅Π³Π°Ρ‚Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ кавалСрийский ΠΏΠΎΠ»ΠΊ – ΡΠΈΡ€ΠΈΠΉΡΠΊΡƒΡŽ Π°Π»Ρƒ. + +Когда Π»Π΅Π³Π°Ρ‚ ΠΏΠΎΠΊΠΈΠ½ΡƒΠ» Π±Π°Π»ΠΊΠΎΠ½, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠΊΠ°Π·Π°Π» ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŽ ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π° Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½Π°, Π΄Π²ΡƒΡ… Ρ‡Π»Π΅Π½ΠΎΠ² Π΅Π³ΠΎ ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΈΠΊΠ° Ρ…Ρ€Π°ΠΌΠΎΠ²ΠΎΠΉ страТи Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ° Π²ΠΎ Π΄Π²ΠΎΡ€Π΅Ρ†, Π½ΠΎ ΠΏΡ€ΠΈ этом Π΄ΠΎΠ±Π°Π²ΠΈΠ», Ρ‡Ρ‚ΠΎ просит ΡƒΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎ совСщания со всСми этими людьми ΠΎΠ½ ΠΌΠΎΠ³ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ с ΠΏΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠΌ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΈ Π½Π°Π΅Π΄ΠΈΠ½Π΅. + +ΠŸΡ€ΠΈΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° Π±Ρ‹Π»ΠΈ исполнСны быстро ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ, ΠΈ солнцС, с ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½ΠΎΡŽ ΡΡ€ΠΎΡΡ‚ΡŒΡŽ сТигавшСС Π² эти Π΄Π½ΠΈ Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌ, Π½Π΅ успСло Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚ΡŒΡΡ ΠΊ своСй Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅, ΠΊΠΎΠ³Π΄Π° Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ тСррасС сада Ρƒ Π΄Π²ΡƒΡ… ΠΌΡ€Π°ΠΌΠΎΡ€Π½Ρ‹Ρ… Π±Π΅Π»Ρ‹Ρ… львов, ΡΡ‚ΠΎΡ€ΠΎΠΆΠΈΠ²ΡˆΠΈΡ… лСстницу, Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ»ΠΈΡΡŒ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ обязанности ΠΏΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π° Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½Π° пСрвосвящСнник иудСйский Π˜ΠΎΡΠΈΡ„ ΠšΠ°ΠΈΡ„Π°. + +Π’ саду Π±Ρ‹Π»ΠΎ Ρ‚ΠΈΡ…ΠΎ. Но, выйдя ΠΈΠ·-ΠΏΠΎΠ΄ ΠΊΠΎΠ»ΠΎΠ½Π½Π°Π΄Ρ‹ Π½Π° Π·Π°Π»ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ солнцСм Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ сада с пальмами Π½Π° Ρ‡ΡƒΠ΄ΠΎΠ²ΠΈΡ‰Π½Ρ‹Ρ… слоновых Π½ΠΎΠ³Π°Ρ…, ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ развСрнулся вСсь нСнавистный Π΅ΠΌΡƒ Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌ с висячими мостами, крСпостями ΠΈ – самоС Π³Π»Π°Π²Π½ΠΎΠ΅ – с Π½Π΅ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‰Π΅ΠΉΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΌΡƒ описанию Π³Π»Ρ‹Π±ΠΎΠΉ ΠΌΡ€Π°ΠΌΠΎΡ€Π° с Π·ΠΎΠ»ΠΎΡ‚ΠΎΡŽ Π΄Ρ€Π°ΠΊΠΎΠ½ΠΎΠ²ΠΎΠΉ Ρ‡Π΅ΡˆΡƒΠ΅ΡŽ вмСсто ΠΊΡ€Ρ‹ΡˆΠΈ – Ρ…Ρ€Π°ΠΌΠΎΠΌ Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΡΠΊΠΈΠΌ, – острым слухом ΡƒΠ»ΠΎΠ²ΠΈΠ» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π΄Π°Π»Π΅ΠΊΠΎ ΠΈ Π²Π½ΠΈΠ·Ρƒ, Ρ‚Π°ΠΌ, Π³Π΄Π΅ камСнная стСна отдСляла Π½ΠΈΠΆΠ½ΠΈΠ΅ тСррасы Π΄Π²ΠΎΡ€Ρ†ΠΎΠ²ΠΎΠ³ΠΎ сада ΠΎΡ‚ городской ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ, Π½ΠΈΠ·ΠΊΠΎΠ΅ Π²ΠΎΡ€Ρ‡Π°Π½ΠΈΠ΅, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Π·ΠΌΡ‹Π²Π°Π»ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π°ΠΌ слабСнькиС, Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ Π½Π΅ Ρ‚ΠΎ стоны, Π½Π΅ Ρ‚ΠΎ ΠΊΡ€ΠΈΠΊΠΈ. + +ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ понял, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΡƒΠΆΠ΅ ΡΠΎΠ±Ρ€Π°Π»Π°ΡΡŒ нСсмСтная Ρ‚ΠΎΠ»ΠΏΠ° Π²Π·Π²ΠΎΠ»Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… послСдними бСспорядками ΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ°, Ρ‡Ρ‚ΠΎ эта Ρ‚ΠΎΠ»ΠΏΠ° Π² Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ вынСсСния ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€Π° ΠΈ Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΉ ΠΊΡ€ΠΈΡ‡Π°Ρ‚ бСспокойныС ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Ρ‹ Π²ΠΎΠ΄Ρ‹. + +ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π½Π°Ρ‡Π°Π» с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ пригласил пСрвосвящСнника Π½Π° Π±Π°Π»ΠΊΠΎΠ½, с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ ΠΎΡ‚ бСзТалостного зноя, Π½ΠΎ ΠšΠ°ΠΈΡ„Π° Π²Π΅ΠΆΠ»ΠΈΠ²ΠΎ извинился ΠΈ объяснил, Ρ‡Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этого Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. ΠŸΠΈΠ»Π°Ρ‚ Π½Π°ΠΊΠΈΠ½ΡƒΠ» капюшон Π½Π° свою Ρ‡ΡƒΡ‚ΡŒ Π»Ρ‹ΡΠ΅ΡŽΡ‰ΡƒΡŽ Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΈ Π½Π°Ρ‡Π°Π» Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€. Π Π°Π·Π³ΠΎΠ²ΠΎΡ€ этот шСл ΠΏΠΎ-грСчСски. + +ΠŸΠΈΠ»Π°Ρ‚ сказал, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π» Π΄Π΅Π»ΠΎ Π˜Π΅ΡˆΡƒΠ° Π“Π°-Ноцри ΠΈ ΡƒΡ‚Π²Π΅Ρ€Π΄ΠΈΠ» смСртный ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€. + +Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊ смСртной ΠΊΠ°Π·Π½ΠΈ, которая Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ сСгодня, ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€Π΅Π½Ρ‹ Ρ‚Ρ€ΠΎΠ΅ Ρ€Π°Π·Π±ΠΎΠΉΠ½ΠΈΠΊΠΎΠ²: Дисмас, ГСстас, Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½ ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, этот Π˜Π΅ΡˆΡƒΠ° Π“Π°-Ноцри. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²ΠΎΠ΅, Π²Π·Π΄ΡƒΠΌΠ°Π²ΡˆΠΈΠ΅ ΠΏΠΎΠ΄Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Ρ€ΠΎΠ΄ Π½Π° Π±ΡƒΠ½Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² кСсаря, взяты с Π±ΠΎΠ΅ΠΌ Ρ€ΠΈΠΌΡΠΊΠΎΡŽ Π²Π»Π°ΡΡ‚ΡŒΡŽ, числятся Π·Π° ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎ Π½ΠΈΡ… здСсь Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‚ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. ПослСдниС ΠΆΠ΅, Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½ ΠΈ Π“Π°-Ноцри, схвачСны мСстной Π²Π»Π°ΡΡ‚ΡŒΡŽ ΠΈ осуТдСны Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½ΠΎΠΌ. Богласно Π·Π°ΠΊΠΎΠ½Ρƒ, согласно ΠΎΠ±Ρ‹Ρ‡Π°ΡŽ, ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· этих Π΄Π²ΡƒΡ… прСступников Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π° свободу Π² Ρ‡Π΅ΡΡ‚ΡŒ Π½Π°ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰Π΅Π³ΠΎ сСгодня Π²Π΅Π»ΠΈΠΊΠΎΠ³ΠΎ ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊΠ° пасхи. + +Π˜Ρ‚Π°ΠΊ, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ ΠΆΠ΅Π»Π°Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… прСступников Π½Π°ΠΌΠ΅Ρ€Π΅Π½ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½: Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½Π° ΠΈΠ»ΠΈ Π“Π°-Ноцри? ΠšΠ°ΠΈΡ„Π° склонил Π³ΠΎΠ»ΠΎΠ²Ρƒ Π² Π·Π½Π°ΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ вопрос Π΅ΠΌΡƒ ясСн, ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»: + +– Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½ просит ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½Π°. + +ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ Π΅ΠΌΡƒ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ пСрвосвящСнник, Π½ΠΎ Π·Π°Π΄Π°Ρ‡Π° Π΅Π³ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ·ΡƒΠΌΠ»Π΅Π½ΠΈΠ΅. + +ΠŸΠΈΠ»Π°Ρ‚ это ΠΈ сдСлал с большим искусством. Π‘Ρ€ΠΎΠ²ΠΈ Π½Π° Π½Π°Π΄ΠΌΠ΅Π½Π½ΠΎΠΌ Π»ΠΈΡ†Π΅ поднялись, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ прямо Π² Π³Π»Π°Π·Π° поглядСл пСрвосвящСннику с ΠΈΠ·ΡƒΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ. + +– ΠŸΡ€ΠΈΠ·Π½Π°ΡŽΡΡŒ, этот ΠΎΡ‚Π²Π΅Ρ‚ мСня ΡƒΠ΄ΠΈΠ²ΠΈΠ», – мягко Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, – боюсь, Π½Π΅Ρ‚ Π»ΠΈ здСсь нСдоразумСния. + +ΠŸΠΈΠ»Π°Ρ‚ объяснился. Римская Π²Π»Π°ΡΡ‚ΡŒ Π½ΠΈΡ‡ΡƒΡ‚ΡŒ Π½Π΅ ΠΏΠΎΠΊΡƒΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° ΠΏΡ€Π°Π²Π° Π΄ΡƒΡ…ΠΎΠ²Π½ΠΎΠΉ мСстной власти, пСрвосвящСннику это Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстно, Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°Π»ΠΈΡ†ΠΎ явная ошибка. И Π² исправлСнии этой ошибки римская Π²Π»Π°ΡΡ‚ΡŒ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, заинтСрСсована. + +Π’ самом Π΄Π΅Π»Π΅: прСступлСния Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½Π° ΠΈ Π“Π°-Ноцри ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ сравнимы ΠΏΠΎ тяТСсти. Если Π²Ρ‚ΠΎΡ€ΠΎΠΉ, явно ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠΈΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ Π² произнСсСнии Π½Π΅Π»Π΅ΠΏΡ‹Ρ… Ρ€Π΅Ρ‡Π΅ΠΉ, ΡΠΌΡƒΡ‰Π°Π²ΡˆΠΈΡ… Π½Π°Ρ€ΠΎΠ΄ Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мСстах, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ отягощСн Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅. Мало Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» сСбС прямыС ΠΏΡ€ΠΈΠ·Ρ‹Π²Ρ‹ ΠΊ мятСТу, Π½ΠΎ ΠΎΠ½ Π΅Ρ‰Π΅ ΡƒΠ±ΠΈΠ» страТа ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… Π±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½ Π³ΠΎΡ€Π°Π·Π΄ΠΎ опаснСС, Π½Π΅ΠΆΠ΅Π»ΠΈ Π“Π°-Ноцри. + +Π’ силу всСго ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ просит пСрвосвящСнника ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π° свободС Ρ‚ΠΎΠ³ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… осуТдСнных, ΠΊΡ‚ΠΎ ΠΌΠ΅Π½Π΅Π΅ Π²Ρ€Π΅Π΄Π΅Π½, Π° Ρ‚Π°ΠΊΠΈΠΌ, Π±Π΅Π· сомнСния, являСтся Π“Π°-Ноцри. Π˜Ρ‚Π°ΠΊ? + +ΠšΠ°ΠΈΡ„Π° прямо Π² Π³Π»Π°Π·Π° посмотрСл ΠŸΠΈΠ»Π°Ρ‚Ρƒ ΠΈ сказал Ρ‚ΠΈΡ…ΠΈΠΌ, Π½ΠΎ Ρ‚Π²Π΅Ρ€Π΄Ρ‹ΠΌ голосом, Ρ‡Ρ‚ΠΎ Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ознакомился с Π΄Π΅Π»ΠΎΠΌ ΠΈ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎ сообщаСт, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½Π°. + +– Как? Π”Π°ΠΆΠ΅ послС ΠΌΠΎΠ΅Π³ΠΎ ходатайства? Π₯одатайства Ρ‚ΠΎΠ³ΠΎ, Π² Π»ΠΈΡ†Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ римская Π²Π»Π°ΡΡ‚ΡŒ? ΠŸΠ΅Ρ€Π²ΠΎΡΠ²ΡΡ‰Π΅Π½Π½ΠΈΠΊ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈ Π² Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ€Π°Π·. + +– И Π² Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ€Π°Π· ΠΌΡ‹ сообщаСм, Ρ‡Ρ‚ΠΎ освобоТдаСм Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½Π°, – Ρ‚ΠΈΡ…ΠΎ сказал ΠšΠ°ΠΈΡ„Π°. + +ВсС Π±Ρ‹Π»ΠΎ ΠΊΠΎΠ½Ρ‡Π΅Π½ΠΎ, ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΎ Ρ‡Π΅ΠΌ. Π“Π°-Ноцри ΡƒΡ…ΠΎΠ΄ΠΈΠ» навсСгда, ΠΈ ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹Π΅, Π·Π»Ρ‹Π΅ Π±ΠΎΠ»ΠΈ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° Π½Π΅ΠΊΠΎΠΌΡƒ ΠΈΠ·Π»Π΅Ρ‡ΠΈΡ‚ΡŒ; ΠΎΡ‚ Π½ΠΈΡ… Π½Π΅Ρ‚ срСдства, ΠΊΡ€ΠΎΠΌΠ΅ смСрти. Но Π½Π΅ эта ΠΌΡ‹ΡΠ»ΡŒ ΠΏΠΎΡ€Π°Π·ΠΈΠ»Π° сСйчас ΠŸΠΈΠ»Π°Ρ‚Π°. ВсС Ρ‚Π° ΠΆΠ΅ нСпонятная тоска, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»Π° Π½Π° Π±Π°Π»ΠΊΠΎΠ½Π΅, ΠΏΡ€ΠΎΠ½ΠΈΠ·Π°Π»Π° всС Π΅Π³ΠΎ сущСство. Он тотчас постарался Π΅Π΅ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΈ объяснСниС Π±Ρ‹Π»ΠΎ странноС: показалось смутно ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ» с осуТдСнным, Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΡΠ»ΡƒΡˆΠ°Π». + +ΠŸΠΈΠ»Π°Ρ‚ ΠΏΡ€ΠΎΠ³Π½Π°Π» эту ΠΌΡ‹ΡΠ»ΡŒ, ΠΈ ΠΎΠ½Π° ΡƒΠ»Π΅Ρ‚Π΅Π»Π° Π² ΠΎΠ΄Π½ΠΎ ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π΅Π»Π°. Она ΡƒΠ»Π΅Ρ‚Π΅Π»Π°, Π° тоска ΠΎΡΡ‚Π°Π»Π°ΡΡŒ нСобъяснСнной, ΠΈΠ±ΠΎ Π½Π΅ ΠΌΠΎΠ³Π»Π° ΠΆΠ΅ Π΅Π΅ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΌΠ΅Π»ΡŒΠΊΠ½ΡƒΠ²ΡˆΠ°Ρ ΠΊΠ°ΠΊ молния ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ погасшая какая-Ρ‚ΠΎ короткая другая ΠΌΡ‹ΡΠ»ΡŒ: «БСссмСртиС... ΠΏΡ€ΠΈΡˆΠ»ΠΎ бСссмСртиС...Β» ЧьС бСссмСртиС ΠΏΡ€ΠΈΡˆΠ»ΠΎ? Π­Ρ‚ΠΎΠ³ΠΎ Π½Π΅ понял ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, Π½ΠΎ ΠΌΡ‹ΡΠ»ΡŒ ΠΎΠ± этом Π·Π°Π³Π°Π΄ΠΎΡ‡Π½ΠΎΠΌ бСссмСртии заставила Π΅Π³ΠΎ ΠΏΠΎΡ…ΠΎΠ»ΠΎΠ΄Π΅Ρ‚ΡŒ Π½Π° солнцСпСкС. + +– Π₯ΠΎΡ€ΠΎΡˆΠΎ, – сказал ΠŸΠΈΠ»Π°Ρ‚, – Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ. + +Π’ΡƒΡ‚ ΠΎΠ½ оглянулся, ΠΎΠΊΠΈΠ½ΡƒΠ» Π²Π·ΠΎΡ€ΠΎΠΌ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ Π΅ΠΌΡƒ ΠΌΠΈΡ€ ΠΈ удивился ΠΏΡ€ΠΎΠΈΡΡˆΠ΅Π΄ΡˆΠ΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π΅. ΠŸΡ€ΠΎΠΏΠ°Π» отягощСнный Ρ€ΠΎΠ·Π°ΠΌΠΈ куст, ΠΏΡ€ΠΎΠΏΠ°Π»ΠΈ кипарисы, ΠΎΠΊΠ°ΠΉΠΌΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ тСррасу, ΠΈ Π³Ρ€Π°Π½Π°Ρ‚ΠΎΠ²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ, ΠΈ бСлая статуя Π² Π·Π΅Π»Π΅Π½ΠΈ, Π΄Π° ΠΈ сама зСлСнь. ΠŸΠΎΠΏΠ»Ρ‹Π»Π° вмСсто этого всСго какая-Ρ‚ΠΎ багровая Π³ΡƒΡ‰Π°, Π² Π½Π΅ΠΉ Π·Π°ΠΊΠ°Ρ‡Π°Π»ΠΈΡΡŒ водоросли ΠΈ Π΄Π²ΠΈΠ½ΡƒΠ»ΠΈΡΡŒ ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ, Π° вмСстС с Π½ΠΈΠΌΠΈ двинулся ΠΈ сам ΠŸΠΈΠ»Π°Ρ‚. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΅Π³ΠΎ уносил, ΡƒΠ΄ΡƒΡˆΠ°Ρ ΠΈ обТигая, самый ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹ΠΉ Π³Π½Π΅Π², Π³Π½Π΅Π² бСссилия. + +– ВСсно ΠΌΠ½Π΅, – Π²Ρ‹ΠΌΠΎΠ»Π²ΠΈΠ» ΠŸΠΈΠ»Π°Ρ‚, – тСсно ΠΌΠ½Π΅! + +Он Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΡŽ влаТною Ρ€ΡƒΠΊΠΎΡŽ Ρ€Π²Π°Π½ΡƒΠ» пряТку с Π²ΠΎΡ€ΠΎΡ‚Π° ΠΏΠ»Π°Ρ‰Π°, ΠΈ Ρ‚Π° ΡƒΠΏΠ°Π»Π° Π½Π° пСсок. + +– БСгодня Π΄ΡƒΡˆΠ½ΠΎ, Π³Π΄Π΅-Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ Π³Ρ€ΠΎΠ·Π°, – отозвался ΠšΠ°ΠΈΡ„Π°, Π½Π΅ сводя Π³Π»Π°Π· с ΠΏΠΎΠΊΡ€Π°ΡΠ½Π΅Π²ΡˆΠ΅Π³ΠΎ Π»ΠΈΡ†Π° ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° ΠΈ прСдвидя всС ΠΌΡƒΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ прСдстоят. «О, ΠΊΠ°ΠΊΠΎΠΉ ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹ΠΉ мСсяц нисан Π² этом Π³ΠΎΠ΄Ρƒ!Β» + +– НСт, – сказал ΠŸΠΈΠ»Π°Ρ‚, – это Π½Π΅ ΠΎΡ‚Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΡƒΡˆΠ½ΠΎ, Π° тСсно ΠΌΠ½Π΅ стало с Ρ‚ΠΎΠ±ΠΎΠΉ, ΠšΠ°ΠΈΡ„Π°, – ΠΈ, сузив Π³Π»Π°Π·Π°, ΠŸΠΈΠ»Π°Ρ‚ улыбнулся ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»: – ΠŸΠΎΠ±Π΅Ρ€Π΅Π³ΠΈ сСбя, пСрвосвящСнник. + +Π’Π΅ΠΌΠ½Ρ‹Π΅ Π³Π»Π°Π·Π° пСрвосвящСнника блСснули, ΠΈ, Π½Π΅ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, ΠΎΠ½ Π²Ρ‹Ρ€Π°Π·ΠΈΠ» Π½Π° своСм Π»ΠΈΡ†Π΅ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅. + +– Π§Ρ‚ΠΎ ΡΠ»Ρ‹ΡˆΡƒ я, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€? – Π³ΠΎΡ€Π΄ΠΎ ΠΈ спокойно ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» ΠšΠ°ΠΈΡ„Π°, – Ρ‚Ρ‹ ΡƒΠ³Ρ€ΠΎΠΆΠ°Π΅ΡˆΡŒ ΠΌΠ½Π΅ послС вынСсСнного ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€Π°, ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ±ΠΎΡŽ самим? ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ это Π±Ρ‹Ρ‚ΡŒ? ΠœΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ римский ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ слова, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ. НС ΡƒΡΠ»Ρ‹ΡˆΠ°Π» Π±Ρ‹ нас ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, ΠΈΠ³Π΅ΠΌΠΎΠ½? + +ΠŸΠΈΠ»Π°Ρ‚ ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹ΠΌΠΈ Π³Π»Π°Π·Π°ΠΌΠΈ посмотрСл Π½Π° пСрвосвящСнника ΠΈ, оскалившись, ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΠ» ΡƒΠ»Ρ‹Π±ΠΊΡƒ. + +– Π§Ρ‚ΠΎ Ρ‚Ρ‹, пСрвосвящСнник! ΠšΡ‚ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ нас сСйчас здСсь? Π Π°Π·Π²Π΅ я ΠΏΠΎΡ…ΠΎΠΆ Π½Π° юного бродячСго ΡŽΡ€ΠΎΠ΄ΠΈΠ²ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сСгодня казнят? ΠœΠ°Π»ΡŒΡ‡ΠΈΠΊ Π»ΠΈ я, ΠšΠ°ΠΈΡ„Π°? Π—Π½Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΡŽ ΠΈ Π³Π΄Π΅ Π³ΠΎΠ²ΠΎΡ€ΡŽ. ΠžΡ†Π΅ΠΏΠ»Π΅Π½ сад, ΠΎΡ†Π΅ΠΏΠ»Π΅Π½ Π΄Π²ΠΎΡ€Π΅Ρ†, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈ ΠΌΡ‹ΡˆΡŒ Π½Π΅ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ½Π΅Ρ‚ Π½ΠΈ Π² ΠΊΠ°ΠΊΡƒΡŽ Ρ‰Π΅Π»ΡŒ! Π”Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡ‹ΡˆΡŒ, Π½Π΅ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ½Π΅Ρ‚ Π΄Π°ΠΆΠ΅ этот, ΠΊΠ°ΠΊ Π΅Π³ΠΎ... ΠΈΠ· Π³ΠΎΡ€ΠΎΠ΄Π° ΠšΠΈΡ€ΠΈΠ°Ρ„Π°. ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ‚Ρ‹ знаСшь Ρ‚Π°ΠΊΠΎΠ³ΠΎ, пСрвосвящСнник? Π”Π°... Ссли Π±Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ½ΠΈΠΊ сюда, ΠΎΠ½ Π³ΠΎΡ€ΡŒΠΊΠΎ ΠΏΠΎΠΆΠ°Π»Π΅Π» Π±Ρ‹ сСбя, Π² этом Ρ‚Ρ‹ ΠΌΠ½Π΅, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΎΠ²Π΅Ρ€ΠΈΡˆΡŒ? Π’Π°ΠΊ Π·Π½Π°ΠΉ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π΅Π±Π΅, пСрвосвящСнник, ΠΎΡ‚Π½Ρ‹Π½Π΅ покоя! Ни Ρ‚Π΅Π±Π΅, Π½ΠΈ Π½Π°Ρ€ΠΎΠ΄Ρƒ Ρ‚Π²ΠΎΠ΅ΠΌΡƒ, – ΠΈ ΠŸΠΈΠ»Π°Ρ‚ ΡƒΠΊΠ°Π·Π°Π» вдаль Π½Π°ΠΏΡ€Π°Π²ΠΎ, Ρ‚ΡƒΠ΄Π°, Π³Π΄Π΅ Π² высотС ΠΏΡ‹Π»Π°Π» Ρ…Ρ€Π°ΠΌ, – это я Ρ‚Π΅Π±Π΅ Π³ΠΎΠ²ΠΎΡ€ΡŽ – ΠŸΠΈΠ»Π°Ρ‚ ΠŸΠΎΠ½Ρ‚ΠΈΠΉΡΠΊΠΈΠΉ, всадник Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ КопьС! + +– Π—Π½Π°ΡŽ, знаю! – Π±Π΅ΡΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Ρ‡Π΅Ρ€Π½ΠΎΠ±ΠΎΡ€ΠΎΠ΄Ρ‹ΠΉ ΠšΠ°ΠΈΡ„Π°, ΠΈ Π³Π»Π°Π·Π° Π΅Π³ΠΎ свСркнули. Он вознСс Ρ€ΡƒΠΊΡƒ ΠΊ Π½Π΅Π±Ρƒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»: – Π—Π½Π°Π΅Ρ‚ Π½Π°Ρ€ΠΎΠ΄ иудСйский, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ нСнавидишь Π΅Π³ΠΎ Π»ΡŽΡ‚ΠΎΠΉ Π½Π΅Π½Π°Π²ΠΈΡΡ‚ΡŒΡŽ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡƒΡ‡Π΅Π½ΠΈΠΉ Ρ‚Ρ‹ Π΅ΠΌΡƒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡˆΡŒ, Π½ΠΎ вовсС Ρ‚Ρ‹ Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ³ΡƒΠ±ΠΈΡˆΡŒ! Π—Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ Π΅Π³ΠΎ Π±ΠΎΠ³! Π£ΡΠ»Ρ‹ΡˆΠΈΡ‚ нас, ΡƒΡΠ»Ρ‹ΡˆΠΈΡ‚ всСмогущий ΠΊΠ΅ΡΠ°Ρ€ΡŒ, ΡƒΠΊΡ€ΠΎΠ΅Ρ‚ нас ΠΎΡ‚ губитСля ΠŸΠΈΠ»Π°Ρ‚Π°! + +– О Π½Π΅Ρ‚! – воскликнул ΠŸΠΈΠ»Π°Ρ‚, ΠΈ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ словом Π΅ΠΌΡƒ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡŒ всС Π»Π΅Π³Ρ‡Π΅ ΠΈ Π»Π΅Π³Ρ‡Π΅: Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ большС ΠΏΡ€ΠΈΡ‚Π²ΠΎΡ€ΡΡ‚ΡŒΡΡ. НС Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ слова. – Блишком ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ‹ Таловался ΠΊΠ΅ΡΠ°Ρ€ΡŽ Π½Π° мСня, ΠΈ настал Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΉ час, ΠšΠ°ΠΈΡ„Π°! Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ»Π΅Ρ‚ΠΈΡ‚ Π²Π΅ΡΡ‚ΡŒ ΠΎΡ‚ мСня, Π΄Π° Π½Π΅ намСстнику Π² ΠΠ½Ρ‚ΠΈΠΎΡ…ΠΈΡŽ ΠΈ Π½Π΅ Π² Π ΠΈΠΌ, Π° прямо Π½Π° ΠšΠ°ΠΏΡ€Π΅ΡŽ, самому ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ, Π²Π΅ΡΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π°Π²Π΅Π΄ΠΎΠΌΡ‹Ρ… мятСТников Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ΅ прячСтС ΠΎΡ‚ смСрти. И Π½Π΅ водою ΠΈΠ· Π‘ΠΎΠ»ΠΎΠΌΠΎΠ½ΠΎΠ²Π° ΠΏΡ€ΡƒΠ΄Π°, ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚Π΅Π» я для вашСй ΠΏΠΎΠ»ΡŒΠ·Ρ‹, напою я Ρ‚ΠΎΠ³Π΄Π° Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌ! НСт, Π½Π΅ водою! Вспомни, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΈΠ·-Π·Π° вас ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ со стСн Ρ‰ΠΈΡ‚Ρ‹ с вСнзСлями ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ войска, ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ, видишь, самому ΠΏΡ€ΠΈΠ΅Ρ…Π°Ρ‚ΡŒ, Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас Ρ‚ΡƒΡ‚ творится! Вспомни ΠΌΠΎΠ΅ слово, пСрвосвящСнник. Увидишь Ρ‚Ρ‹ Π½Π΅ ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ³ΠΎΡ€Ρ‚Ρƒ Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ΅, Π½Π΅Ρ‚! ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ стСны Π³ΠΎΡ€ΠΎΠ΄Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π»Π΅Π³ΠΈΠΎΠ½ Π€ΡƒΠ»ΡŒΠΌΠΈΠ½Π°Ρ‚Π°, ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ арабская ΠΊΠΎΠ½Π½ΠΈΡ†Π°, Ρ‚ΠΎΠ³Π΄Π° ΡƒΡΠ»Ρ‹ΡˆΠΈΡˆΡŒ Ρ‚Ρ‹ Π³ΠΎΡ€ΡŒΠΊΠΈΠΉ ΠΏΠ»Π°Ρ‡ ΠΈ стСнания. Π’ΡΠΏΠΎΠΌΠ½ΠΈΡˆΡŒ Ρ‚Ρ‹ Ρ‚ΠΎΠ³Π΄Π° спасСнного Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½Π° ΠΈ поТалССшь, Ρ‡Ρ‚ΠΎ послал Π½Π° ΡΠΌΠ΅Ρ€Ρ‚ΡŒ философа с Π΅Π³ΠΎ ΠΌΠΈΡ€Π½ΠΎΡŽ ΠΏΡ€ΠΎΠΏΠΎΠ²Π΅Π΄ΡŒΡŽ! + +Π›ΠΈΡ†ΠΎ пСрвосвящСнника ΠΏΠΎΠΊΡ€Ρ‹Π»ΠΎΡΡŒ пятнами, Π³Π»Π°Π·Π° Π³ΠΎΡ€Π΅Π»ΠΈ. Он, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Ρƒ, улыбнулся, скалясь, ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»: + +– Π’Π΅Ρ€ΠΈΡˆΡŒ Π»ΠΈ Ρ‚Ρ‹, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, сам Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ сСйчас Π³ΠΎΠ²ΠΎΡ€ΠΈΡˆΡŒ? НСт, Π½Π΅ Π²Π΅Ρ€ΠΈΡˆΡŒ! НС ΠΌΠΈΡ€, Π½Π΅ ΠΌΠΈΡ€ принСс Π½Π°ΠΌ ΠΎΠ±ΠΎΠ»ΡŒΡΡ‚ΠΈΡ‚Π΅Π»ΡŒ Π½Π°Ρ€ΠΎΠ΄Π° Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌ, ΠΈ Ρ‚Ρ‹, всадник, это прСкрасно понимаСшь. Π’Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Π΅Π³ΠΎ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ смутил Π½Π°Ρ€ΠΎΠ΄, Π½Π°Π΄ Π²Π΅Ρ€ΠΎΡŽ надругался ΠΈ ΠΏΠΎΠ΄Π²Π΅Π» Π½Π°Ρ€ΠΎΠ΄ ΠΏΠΎΠ΄ римскиС ΠΌΠ΅Ρ‡ΠΈ! Но я, пСрвосвящСнник иудСйский, ΠΏΠΎΠΊΡƒΠ΄Π° ΠΆΠΈΠ², Π½Π΅ Π΄Π°ΠΌ Π½Π° ΠΏΠΎΡ€ΡƒΠ³Π°Π½ΠΈΠ΅ Π²Π΅Ρ€Ρƒ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Ρƒ Π½Π°Ρ€ΠΎΠ΄! Π’Ρ‹ ΡΠ»Ρ‹ΡˆΠΈΡˆΡŒ, ΠŸΠΈΠ»Π°Ρ‚? – И Ρ‚ΡƒΡ‚ ΠšΠ°ΠΈΡ„Π° Π³Ρ€ΠΎΠ·Π½ΠΎ поднял Ρ€ΡƒΠΊΡƒ: – ΠŸΡ€ΠΈΡΠ»ΡƒΡˆΠ°ΠΉΡΡ, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€! + +ΠšΠ°ΠΈΡ„Π° смолк, ΠΈ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ услыхал ΠΎΠΏΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π±Ρ‹ ΡˆΡƒΠΌ моря, ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊ самым стСнам сада Π˜Ρ€ΠΎΠ΄Π° Π²Π΅Π»ΠΈΠΊΠΎΠ³ΠΎ. Π­Ρ‚ΠΎΡ‚ ΡˆΡƒΠΌ поднимался снизу ΠΊ Π½ΠΎΠ³Π°ΠΌ ΠΈ Π² Π»ΠΈΡ†ΠΎ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Ρƒ. А Π·Π° спиной Ρƒ Π½Π΅Π³ΠΎ, Ρ‚Π°ΠΌ, Π·Π° ΠΊΡ€Ρ‹Π»ΡŒΡΠΌΠΈ Π΄Π²ΠΎΡ€Ρ†Π°, ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈΡΡŒ Ρ‚Ρ€Π΅Π²ΠΎΠΆΠ½Ρ‹Π΅ Ρ‚Ρ€ΡƒΠ±Π½Ρ‹Π΅ сигналы, тяТкий хруст сотСн Π½ΠΎΠ³, ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ΅ бряцаниС, – Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ понял, Ρ‡Ρ‚ΠΎ римская ΠΏΠ΅Ρ…ΠΎΡ‚Π° ΡƒΠΆΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚, согласно Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΊΠ°Π·Ρƒ, ΡΡ‚Ρ€Π΅ΠΌΡΡΡŒ Π½Π° ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹ΠΉ для Π±ΡƒΠ½Ρ‚ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² ΠΈ Ρ€Π°Π·Π±ΠΎΠΉΠ½ΠΈΠΊΠΎΠ² прСдсмСртный ΠΏΠ°Ρ€Π°Π΄. + +– Π’Ρ‹ ΡΠ»Ρ‹ΡˆΠΈΡˆΡŒ, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€? – Ρ‚ΠΈΡ…ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ» пСрвосвящСнник, – Π½Π΅ΡƒΠΆΠ΅Π»ΠΈ Ρ‚Ρ‹ скаТСшь ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ всС это, – Ρ‚ΡƒΡ‚ пСрвосвящСнник поднял ΠΎΠ±Π΅ Ρ€ΡƒΠΊΠΈ, ΠΈ Ρ‚Π΅ΠΌΠ½Ρ‹ΠΉ капюшон свалился с Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠšΠ°ΠΈΡ„Ρ‹, – Π²Ρ‹Π·Π²Π°Π» ΠΆΠ°Π»ΠΊΠΈΠΉ Ρ€Π°Π·Π±ΠΎΠΉΠ½ΠΈΠΊ Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½? + +ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Ρ‚Ρ‹Π»ΡŒΠ½ΠΎΠΉ стороной кисти Ρ€ΡƒΠΊΠΈ Π²Ρ‹Ρ‚Π΅Ρ€ ΠΌΠΎΠΊΡ€Ρ‹ΠΉ, Ρ…ΠΎΠ»ΠΎΠ΄Π½Ρ‹ΠΉ Π»ΠΎΠ±, поглядСл Π½Π° зСмлю, ΠΏΠΎΡ‚ΠΎΠΌ, ΠΏΡ€ΠΈΡ‰ΡƒΡ€ΠΈΠ²ΡˆΠΈΡΡŒ, Π² Π½Π΅Π±ΠΎ, ΡƒΠ²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎ раскалСнный ΡˆΠ°Ρ€ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π°Π΄ самой Π΅Π³ΠΎ головою, Π° Ρ‚Π΅Π½ΡŒ ΠšΠ°ΠΈΡ„Ρ‹ совсСм съСТилась Ρƒ львиного хвоста, ΠΈ сказал Ρ‚ΠΈΡ…ΠΎ ΠΈ Ρ€Π°Π²Π½ΠΎΠ΄ΡƒΡˆΠ½ΠΎ: + +– Π”Π΅Π»ΠΎ ΠΈΠ΄Π΅Ρ‚ ΠΊ ΠΏΠΎΠ»ΡƒΠ΄Π½ΡŽ. ΠœΡ‹ ΡƒΠ²Π»Π΅ΠΊΠ»ΠΈΡΡŒ бСсСдою, Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ. + +Π’ изысканных выраТСниях извинившись ΠΏΠ΅Ρ€Π΅Π΄ пСрвосвящСнником, ΠΎΠ½ попросил Π΅Π³ΠΎ ΠΏΡ€ΠΈΡΠ΅ΡΡ‚ΡŒ Π½Π° скамью Π² Ρ‚Π΅Π½ΠΈ ΠΌΠ°Π³Π½ΠΎΠ»ΠΈΠΈ ΠΈ ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΡ†, Π½ΡƒΠΆΠ½Ρ‹Ρ… для послСднСго ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ совСщания, ΠΈ отдаст Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ распоряТСниС, связанноС с казнью. + +ΠšΠ°ΠΈΡ„Π° Π²Π΅ΠΆΠ»ΠΈΠ²ΠΎ поклонился, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠ² Ρ€ΡƒΠΊΡƒ ΠΊ сСрдцу, ΠΈ остался Π² саду, Π° ΠŸΠΈΠ»Π°Ρ‚ вСрнулся Π½Π° Π±Π°Π»ΠΊΠΎΠ½. Π’Π°ΠΌ ΠΎΠΆΠΈΠ΄Π°Π²ΡˆΠ΅ΠΌΡƒ Π΅Π³ΠΎ ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŽ ΠΎΠ½ Π²Π΅Π»Π΅Π» ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΡ‚ΡŒ Π² сад Π»Π΅Π³Π°Ρ‚Π° Π»Π΅Π³ΠΈΠΎΠ½Π°, Ρ‚Ρ€ΠΈΠ±ΡƒΠ½Π° ΠΊΠΎΠ³ΠΎΡ€Ρ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π²ΡƒΡ… Ρ‡Π»Π΅Π½ΠΎΠ² Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½Π° ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΈΠΊΠ° Ρ…Ρ€Π°ΠΌΠΎΠ²ΠΎΠΉ страТи, ΠΎΠΆΠΈΠ΄Π°Π²ΡˆΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π° Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π½ΠΈΠΆΠ½Π΅ΠΉ тСррасС сада Π² ΠΊΡ€ΡƒΠ³Π»ΠΎΠΉ бСсСдкС с Ρ„ΠΎΠ½Ρ‚Π°Π½ΠΎΠΌ. К этому ΠŸΠΈΠ»Π°Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΎΠ½ тотчас Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΈ сам, ΠΈ удалился Π²Π½ΡƒΡ‚Ρ€ΡŒ Π΄Π²ΠΎΡ€Ρ†Π°. + +Пока ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ собирал совСщаниС, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π² Π·Π°Ρ‚Π΅Π½Π΅Π½Π½ΠΎΠΉ ΠΎΡ‚ солнца Ρ‚Π΅ΠΌΠ½Ρ‹ΠΌΠΈ ΡˆΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅ ΠΈΠΌΠ΅Π» свиданиС с ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Π»ΠΈΡ†ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ ΠΏΡ€ΠΈΠΊΡ€Ρ‹Ρ‚ΠΎ капюшоном, хотя Π² ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅ Π»ΡƒΡ‡ΠΈ солнца ΠΈ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π΅Π³ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒ. Π‘Π²ΠΈΠ΄Π°Π½ΠΈΠ΅ это Π±Ρ‹Π»ΠΎ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎ. ΠŸΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Ρ‚ΠΈΡ…ΠΎ сказал Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ нСсколько слов, послС Ρ‡Π΅Π³ΠΎ Ρ‚ΠΎΡ‚ удалился, Π° ΠŸΠΈΠ»Π°Ρ‚ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ»ΠΎΠ½Π½Π°Π΄Ρƒ ΠΏΡ€ΠΎΡˆΠ΅Π» Π² сад. + +Π’Π°ΠΌ Π² присутствии всСх, ΠΊΠΎΠ³ΠΎ ΠΎΠ½ ΠΆΠ΅Π»Π°Π» Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ торТСствСнно ΠΈ сухо ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ смСртный ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€ Π˜Π΅ΡˆΡƒΠ° Π“Π°-Ноцри, ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ освСдомился Ρƒ Ρ‡Π»Π΅Π½ΠΎΠ² Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½Π° ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠΎΠ³ΠΎ ΠΈΠ· прСступников ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΆΠΈΠ²Ρ‹Ρ…. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² ΠΎΡ‚Π²Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это – Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ сказал: + +– ΠžΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, – ΠΈ Π²Π΅Π»Π΅Π» ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŽ Ρ‚ΡƒΡ‚ ΠΆΠ΅ занСсти это Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», сТал Π² Ρ€ΡƒΠΊΠ΅ ΠΏΠΎΠ΄Π½ΡΡ‚ΡƒΡŽ сСкрСтарСм с пСска пряТку ΠΈ торТСствСнно сказал: – ΠŸΠΎΡ€Π°! + +Π’ΡƒΡ‚ всС ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΎΠ½ΡƒΠ»ΠΈΡΡŒ Π²Π½ΠΈΠ· ΠΏΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ ΠΌΡ€Π°ΠΌΠΎΡ€Π½ΠΎΠΉ лСстницС ΠΌΠ΅ΠΆ стСн Ρ€ΠΎΠ·, ΠΈΡΡ‚ΠΎΡ‡Π°Π²ΡˆΠΈΡ… ΠΎΠ΄ΡƒΡ€ΡΡŽΡ‰ΠΈΠΉ Π°Ρ€ΠΎΠΌΠ°Ρ‚, ΡΠΏΡƒΡΠΊΠ°ΡΡΡŒ всС Π½ΠΈΠΆΠ΅ ΠΈ Π½ΠΈΠΆΠ΅ ΠΊ Π΄Π²ΠΎΡ€Ρ†ΠΎΠ²ΠΎΠΉ стСнС, ΠΊ Π²ΠΎΡ€ΠΎΡ‚Π°ΠΌ, выходящим Π½Π° Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ, Π³Π»Π°Π΄ΠΊΠΎ Π²Ρ‹ΠΌΠΎΡ‰Π΅Π½Π½ΡƒΡŽ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ виднСлись ΠΊΠΎΠ»ΠΎΠ½Π½Ρ‹ ΠΈ статуи Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΡΠΊΠΎΠ³ΠΎ ристалища. + +Π›ΠΈΡˆΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Ρ€ΡƒΠΏΠΏΠ°, выйдя ΠΈΠ· сада Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ, поднялась Π½Π° ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ царящий Π½Π°Π΄ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒΡŽ ΠΊΠ°ΠΌΠ΅Π½Π½Ρ‹ΠΉ помост, ΠŸΠΈΠ»Π°Ρ‚, ΠΎΠ³Π»ΡΠ΄Ρ‹Π²Π°ΡΡΡŒ сквозь ΠΏΡ€ΠΈΡ‰ΡƒΡ€Π΅Π½Π½Ρ‹Π΅ Π²Π΅ΠΊΠΈ, разобрался Π² обстановкС. Π’ΠΎ пространство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡˆΠ΅Π», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ пространство ΠΎΡ‚ Π΄Π²ΠΎΡ€Ρ†ΠΎΠ²ΠΎΠΉ стСны Π΄ΠΎ помоста, Π±Ρ‹Π»ΠΎ пусто, Π½ΠΎ Π·Π°Ρ‚ΠΎ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ сСбя ΠŸΠΈΠ»Π°Ρ‚ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΡƒΠΆΠ΅ Π½Π΅ ΡƒΠ²ΠΈΠ΄Π΅Π» – Π΅Π΅ съСла Ρ‚ΠΎΠ»ΠΏΠ°. Она Π·Π°Π»ΠΈΠ»Π° Π±Ρ‹ ΠΈ самый помост, ΠΈ Ρ‚ΠΎ ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½ΠΎΠ΅ пространство, Ссли Π±Ρ‹ Ρ‚Ρ€ΠΎΠΉΠ½ΠΎΠΉ ряд сСбастийских солдат ΠΏΠΎ Π»Π΅Π²ΡƒΡŽ Ρ€ΡƒΠΊΡƒ ΠŸΠΈΠ»Π°Ρ‚Π° ΠΈ солдат итурСйской Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ³ΠΎΡ€Ρ‚Ρ‹ ΠΏΠΎ ΠΏΡ€Π°Π²ΡƒΡŽ – Π½Π΅ Π΄Π΅Ρ€ΠΆΠ°Π» Π΅Π΅. + +Π˜Ρ‚Π°ΠΊ, ΠŸΠΈΠ»Π°Ρ‚ поднялся Π½Π° помост, сТимая машинально Π² ΠΊΡƒΠ»Π°ΠΊΠ΅ Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ пряТку ΠΈ Ρ‰ΡƒΡ€ΡΡΡŒ. Щурился ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΎΡ‚Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ солнцС ΠΆΠ³Π»ΠΎ Π΅ΠΌΡƒ Π³Π»Π°Π·Π°, Π½Π΅Ρ‚! Он Π½Π΅ Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ осуТдСнных, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΎΠ½ это прСкрасно Π·Π½Π°Π», сСйчас вслСд Π·Π° Π½ΠΈΠΌ возводят Π½Π° помост. + +Π›ΠΈΡˆΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π΅Π»Ρ‹ΠΉ ΠΏΠ»Π°Ρ‰ с багряной ΠΏΠΎΠ΄Π±ΠΈΠ²ΠΊΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊ Π² высотС Π½Π° ΠΊΠ°ΠΌΠ΅Π½Π½ΠΎΠΌ утСсС Π½Π°Π΄ ΠΊΡ€Π°Π΅ΠΌ чСловСчСского моря, нСзрячСму ΠŸΠΈΠ»Π°Ρ‚Ρƒ Π² ΡƒΡˆΠΈ ΡƒΠ΄Π°Ρ€ΠΈΠ»Π° звуковая Π²ΠΎΠ»Π½Π°: Β«Π“Π°-Π°-Π°...Β» Она Π½Π°Ρ‡Π°Π»Π°ΡΡŒ Π½Π΅Π³Ρ€ΠΎΠΌΠΊΠΎ, Π·Π°Ρ€ΠΎΠ΄ΠΈΠ²ΡˆΠΈΡΡŒ Π³Π΄Π΅-Ρ‚ΠΎ Π²Π΄Π°Π»ΠΈ Ρƒ Π³ΠΈΠΏΠΏΠΎΠ΄Ρ€ΠΎΠΌΠ°, ΠΏΠΎΡ‚ΠΎΠΌ стала Π³Ρ€ΠΎΠΌΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈ, ΠΏΡ€ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π²ΡˆΠΈΡΡŒ нСсколько сСкунд, Π½Π°Ρ‡Π°Π»Π° ΡΠΏΠ°Π΄Π°Ρ‚ΡŒ. Β«Π£Π²ΠΈΠ΄Π΅Π»ΠΈ мСня», – ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€. Π’ΠΎΠ»Π½Π° Π½Π΅ дошла Π΄ΠΎ низшСй Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ стала ΠΎΠΏΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΡΡ‚Π°Ρ‚ΡŒ ΠΈ, ΠΊΠ°Ρ‡Π°ΡΡΡŒ, поднялась Π²Ρ‹ΡˆΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ, ΠΈ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²ΠΎΠ»Π½Π΅, ΠΊΠ°ΠΊ Π½Π° морском Π²Π°Π»Ρƒ вскипаСт ΠΏΠ΅Π½Π°, вскипСл свист ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅, сквозь Π³Ρ€ΠΎΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹Π΅, ТСнскиС стоны. Β«Π­Ρ‚ΠΎ ΠΈΡ… Π²Π²Π΅Π»ΠΈ Π½Π° помост... – ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» ΠŸΠΈΠ»Π°Ρ‚, – Π° стоны ΠΎΡ‚Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π²ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΆΠ΅Π½Ρ‰ΠΈΠ½, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎΠ»ΠΏΠ° подалась Π²ΠΏΠ΅Ρ€Π΅Π΄Β». + +Он Π²Ρ‹ΠΆΠ΄Π°Π» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, зная, Ρ‡Ρ‚ΠΎ никакою силой нСльзя Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡƒΠΌΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ Ρ‚ΠΎΠ»ΠΏΡƒ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ Π²Ρ‹Π΄ΠΎΡ…Π½Π΅Ρ‚ всС, Ρ‡Ρ‚ΠΎ накопилось Ρƒ Π½Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ, ΠΈ Π½Π΅ смолкнСт сама. + +И ΠΊΠΎΠ³Π΄Π° этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ наступил, ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ выбросил Π²Π²Π΅Ρ€Ρ… ΠΏΡ€Π°Π²ΡƒΡŽ Ρ€ΡƒΠΊΡƒ, ΠΈ послСдний ΡˆΡƒΠΌ сдуло с Ρ‚ΠΎΠ»ΠΏΡ‹. + +Π’ΠΎΠ³Π΄Π° ΠŸΠΈΠ»Π°Ρ‚ Π½Π°Π±Ρ€Π°Π», сколько ΠΌΠΎΠ³, горячСго Π²ΠΎΠ·Π΄ΡƒΡ…Π° Π² Π³Ρ€ΡƒΠ΄ΡŒ ΠΈ Π·Π°ΠΊΡ€ΠΈΡ‡Π°Π», ΠΈ сорванный Π΅Π³ΠΎ голос понСсло Π½Π°Π΄ тысячами Π³ΠΎΠ»ΠΎΠ²: + +– ИмСнСм кСсаря ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°! + +Π’ΡƒΡ‚ Π² ΡƒΡˆΠΈ Π΅ΠΌΡƒ ΡƒΠ΄Π°Ρ€ΠΈΠ» нСсколько Ρ€Π°Π· ΠΆΠ΅Π»Π΅Π·Π½Ρ‹ΠΉ Ρ€ΡƒΠ±Π»Π΅Π½Ρ‹ΠΉ ΠΊΡ€ΠΈΠΊ – Π² ΠΊΠΎΠ³ΠΎΡ€Ρ‚Π°Ρ…, взбросив Π²Π²Π΅Ρ€Ρ… копья ΠΈ Π·Π½Π°Ρ‡ΠΊΠΈ, ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΠΈΡ‡Π°Π»ΠΈ солдаты: + +– Π”Π° здравствуСт ΠΊΠ΅ΡΠ°Ρ€ΡŒ! + +ΠŸΠΈΠ»Π°Ρ‚ Π·Π°Π΄Ρ€Π°Π» Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΈ ΡƒΡ‚ΠΊΠ½ΡƒΠ» Π΅Π΅ прямо Π² солнцС. Под Π²Π΅ΠΊΠ°ΠΌΠΈ Ρƒ Π½Π΅Π³ΠΎ вспыхнул Π·Π΅Π»Π΅Π½Ρ‹ΠΉ огонь, ΠΎΡ‚ Π½Π΅Π³ΠΎ загорСлся ΠΌΠΎΠ·Π³, ΠΈ Π½Π°Π΄ Ρ‚ΠΎΠ»ΠΏΠΎΡŽ ΠΏΠΎΠ»Π΅Ρ‚Π΅Π»ΠΈ Ρ…Ρ€ΠΈΠΏΠ»Ρ‹Π΅ арамСйскиС слова: + +– Π§Π΅Ρ‚Π²Π΅Ρ€ΠΎ прСступников, арСстованных Π² Π•Ρ€ΡˆΠ°Π»Π°ΠΈΠΌΠ΅ Π·Π° убийства, ΠΏΠΎΠ΄ΡΡ‚Ρ€Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° ΠΊ мятСТу ΠΈ оскорблСниС Π·Π°ΠΊΠΎΠ½ΠΎΠ² ΠΈ Π²Π΅Ρ€Ρ‹, ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€Π΅Π½Ρ‹ ΠΊ ΠΏΠΎΠ·ΠΎΡ€Π½ΠΎΠΉ ΠΊΠ°Π·Π½ΠΈ – повСшСнию Π½Π° столбах! И эта казнь сСйчас ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Π½Π° Лысой Π“ΠΎΡ€Π΅! ИмСна прСступников – Дисмас, ГСстас, Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½ ΠΈ Π“Π°-Ноцри. Π’ΠΎΡ‚ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ! + + +ΠŸΠΈΠ»Π°Ρ‚ ΡƒΠΊΠ°Π·Π°Π» Π²ΠΏΡ€Π°Π²ΠΎ Ρ€ΡƒΠΊΠΎΠΉ, Π½Π΅ видя Π½ΠΈΠΊΠ°ΠΊΠΈΡ… прСступников, Π½ΠΎ зная, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚Π°ΠΌ, Π½Π° мСстС, Π³Π΄Π΅ ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ. + +Π’ΠΎΠ»ΠΏΠ° ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»Π° Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ Π³ΡƒΠ»ΠΎΠΌ ΠΊΠ°ΠΊ Π±Ρ‹ удивлСния ΠΈΠ»ΠΈ облСгчСния. Когда ΠΆΠ΅ ΠΎΠ½ ΠΏΠΎΡ‚ΡƒΡ…, ΠŸΠΈΠ»Π°Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»: + +– Но ΠΊΠ°Π·Π½Π΅Π½Ρ‹ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΠΎΠ΅, ΠΈΠ±ΠΎ, согласно Π·Π°ΠΊΠΎΠ½Ρƒ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π°ΡŽ, Π² Ρ‡Π΅ΡΡ‚ΡŒ ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊΠ° пасхи ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· осуТдСнных, ΠΏΠΎ Π²Ρ‹Π±ΠΎΡ€Ρƒ Малого Π‘ΠΈΠ½Π΅Π΄Ρ€ΠΈΠΎΠ½Π° ΠΈ ΠΏΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡŽ римской власти, Π²Π΅Π»ΠΈΠΊΠΎΠ΄ΡƒΡˆΠ½Ρ‹ΠΉ ΠΊΠ΅ΡΠ°Ρ€ΡŒ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΡ€Π΅Π·Ρ€Π΅Π½Π½ΡƒΡŽ Тизнь! + +ΠŸΠΈΠ»Π°Ρ‚ Π²Ρ‹ΠΊΡ€ΠΈΠΊΠΈΠ²Π°Π» слова ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΡΠ»ΡƒΡˆΠ°Π», ΠΊΠ°ΠΊ Π½Π° смСну Π³ΡƒΠ»Ρƒ ΠΈΠ΄Π΅Ρ‚ вСликая Ρ‚ΠΈΡˆΠΈΠ½Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΠΈ Π²Π·Π΄ΠΎΡ…Π°, Π½ΠΈ ΡˆΠΎΡ€ΠΎΡ…Π° Π½Π΅ доносилось Π΄ΠΎ Π΅Π³ΠΎ ΡƒΡˆΠ΅ΠΉ, ΠΈ Π΄Π°ΠΆΠ΅ настало ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠŸΠΈΠ»Π°Ρ‚Ρƒ показалось, Ρ‡Ρ‚ΠΎ всС ΠΊΡ€ΡƒΠ³ΠΎΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ исчСзло. НСнавидимый ΠΈΠΌ Π³ΠΎΡ€ΠΎΠ΄ ΡƒΠΌΠ΅Ρ€, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ ΠΎΠ΄ΠΈΠ½ стоит, сТигаСмый отвСсными Π»ΡƒΡ‡Π°ΠΌΠΈ, ΡƒΠΏΠ΅Ρ€ΡˆΠΈΡΡŒ Π»ΠΈΡ†ΠΎΠΌ Π² Π½Π΅Π±ΠΎ. ΠŸΠΈΠ»Π°Ρ‚ Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠ°Π» Ρ‚ΠΈΡˆΠΈΠ½Ρƒ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π½Π°Ρ‡Π°Π» Π²Ρ‹ΠΊΡ€ΠΈΠΊΠΈΠ²Π°Ρ‚ΡŒ: + +– Имя Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³ΠΎ сСйчас ΠΏΡ€ΠΈ вас отпустят Π½Π° свободу... + +Он сдСлал Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΡƒΠ·Ρƒ, задСрТивая имя, провСряя, всС Π»ΠΈ сказал, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹ΠΉ Π³ΠΎΡ€ΠΎΠ΄ воскрСснСт послС произнСсСния ΠΈΠΌΠ΅Π½ΠΈ счастливца ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ дальнСйшиС слова ΡΠ»Ρ‹ΡˆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚. + +«ВсС? – Π±Π΅Π·Π·Π²ΡƒΡ‡Π½ΠΎ ΡˆΠ΅ΠΏΠ½ΡƒΠ» сСбС ΠŸΠΈΠ»Π°Ρ‚, – всС. Имя!Β» + +И, раскатив Π±ΡƒΠΊΠ²Ρƒ Β«Ρ€Β» Π½Π°Π΄ ΠΌΠΎΠ»Ρ‡Π°Ρ‰ΠΈΠΌ Π³ΠΎΡ€ΠΎΠ΄ΠΎΠΌ, ΠΎΠ½ ΠΏΡ€ΠΎΠΊΡ€ΠΈΡ‡Π°Π»: + +– Π’Π°Ρ€-Ρ€Π°Π²Π²Π°Π½! + +Π’ΡƒΡ‚ Π΅ΠΌΡƒ показалось, Ρ‡Ρ‚ΠΎ солнцС, Π·Π°Π·Π²Π΅Π½Π΅Π², Π»ΠΎΠΏΠ½ΡƒΠ»ΠΎ Π½Π°Π΄ Π½ΠΈΠΌ ΠΈ Π·Π°Π»ΠΈΠ»ΠΎ Π΅ΠΌΡƒ ΠΎΠ³Π½Π΅ΠΌ ΡƒΡˆΠΈ. Π’ этом ΠΎΠ³Π½Π΅ Π±ΡƒΡˆΠ΅Π²Π°Π»ΠΈ Ρ€Π΅Π², Π²ΠΈΠ·Π³ΠΈ, стоны, Ρ…ΠΎΡ…ΠΎΡ‚ ΠΈ свист. + +ΠŸΠΈΠ»Π°Ρ‚ повСрнулся ΠΈ пошСл ΠΏΠΎ мосту Π½Π°Π·Π°Π΄ ΠΊ ступСням, Π½Π΅ глядя Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ€Π°Π·Π½ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹Ρ… шашСк настила ΠΏΠΎΠ΄ Π½ΠΎΠ³Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒΡΡ. Он Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ Π½Π΅Π³ΠΎ Π·Π° спиною Π½Π° помост Π³Ρ€Π°Π΄ΠΎΠΌ лСтят Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ½Π΅Ρ‚Ρ‹, Ρ„ΠΈΠ½ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π² Π²ΠΎΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΠ»ΠΏΠ΅ люди, давя Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Π»Π΅Π·ΡƒΡ‚ Π½Π° ΠΏΠ»Π΅Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ своими Π³Π»Π°Π·Π°ΠΌΠΈ Ρ‡ΡƒΠ΄ΠΎ – ΠΊΠ°ΠΊ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Π±Ρ‹Π» Π² Ρ€ΡƒΠΊΠ°Ρ… смСрти, вырвался ΠΈΠ· этих Ρ€ΡƒΠΊ! Как Π»Π΅Π³ΠΈΠΎΠ½Π΅Ρ€Ρ‹ ΡΠ½ΠΈΠΌΠ°ΡŽΡ‚ с Π½Π΅Π³ΠΎ Π²Π΅Ρ€Π΅Π²ΠΊΠΈ, нСвольно причиняя Π΅ΠΌΡƒ ΠΆΠ³ΡƒΡ‡ΡƒΡŽ боль Π² Π²Ρ‹Π²ΠΈΡ…Π½ΡƒΡ‚Ρ‹Ρ… Π½Π° допросС Ρ€ΡƒΠΊΠ°Ρ…, ΠΊΠ°ΠΊ ΠΎΠ½, ΠΌΠΎΡ€Ρ‰Π°ΡΡŒ ΠΈ охая, всС ΠΆΠ΅ улыбаСтся бСссмыслСнной ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠ΅ΠΉ ΡƒΠ»Ρ‹Π±ΠΊΠΎΠΉ. + +Он Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ Π² это ΠΆΠ΅ врСмя ΠΊΠΎΠ½Π²ΠΎΠΉ Π²Π΅Π΄Π΅Ρ‚ ΠΊ Π±ΠΎΠΊΠΎΠ²Ρ‹ΠΌ ступСням Ρ‚Ρ€ΠΎΠΈΡ… со связанными Ρ€ΡƒΠΊΠ°ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° Π΄ΠΎΡ€ΠΎΠ³Ρƒ, Π²Π΅Π΄ΡƒΡ‰ΡƒΡŽ Π½Π° Π·Π°ΠΏΠ°Π΄, Π·Π° Π³ΠΎΡ€ΠΎΠ΄, ΠΊ Лысой Π“ΠΎΡ€Π΅. Π›ΠΈΡˆΡŒ оказавшись Π·Π° помостом, Π² Ρ‚Ρ‹Π»Ρƒ Π΅Π³ΠΎ, ΠŸΠΈΠ»Π°Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Π» Π³Π»Π°Π·Π°, зная, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π² бСзопасности – осуТдСнных ΠΎΠ½ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³. + +К стону Π½Π°Ρ‡ΠΈΠ½Π°Π²ΡˆΠ΅ΠΉ ΡƒΡ‚ΠΈΡ…Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΠΏΡ‹ ΠΏΡ€ΠΈΠΌΠ΅ΡˆΠΈΠ²Π°Π»ΠΈΡΡŒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹ ΠΏΡ€ΠΎΠ½Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹ΠΊΡ€ΠΈΠΊΠΈ Π³Π»Π°ΡˆΠ°Ρ‚Π°Π΅Π², ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠ²ΡˆΠΈΡ… ΠΎΠ΄Π½ΠΈ Π½Π° арамСйском, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π° грСчСском языках всС Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΠΈΡ‡Π°Π» с помоста ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄ΠΎ слуха Π΄ΠΎΠ»Π΅Ρ‚Π΅Π» Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ, стрСкочущий ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°ΡŽΡ‰ΠΈΠΉΡΡ конский Ρ‚ΠΎΠΏΠΎΡ‚ ΠΈ Ρ‚Ρ€ΡƒΠ±Π°, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΈ вСсСло ΠΏΡ€ΠΎΠΊΡ€ΠΈΡ‡Π°Π²ΡˆΠ°Ρ. Π­Ρ‚ΠΈΠΌ Π·Π²ΡƒΠΊΠ°ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» свСрлящий свист ΠΌΠ°Π»ΡŒΡ‡ΠΈΡˆΠ΅ΠΊ с ΠΊΡ€ΠΎΠ²Π΅Π»ΡŒ Π΄ΠΎΠΌΠΎΠ² ΡƒΠ»ΠΈΡ†Ρ‹, выводящСй с Π±Π°Π·Π°Ρ€Π° Π½Π° Π³ΠΈΠΏΠΏΠΎΠ΄Ρ€ΠΎΠΌΡΠΊΡƒΡŽ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ, ΠΈ ΠΊΡ€ΠΈΠΊΠΈ Β«Π±Π΅Ρ€Π΅Π³ΠΈΡΡŒ!Β». + +Π‘ΠΎΠ»Π΄Π°Ρ‚, ΠΎΠ΄ΠΈΠ½ΠΎΠΊΠΎ ΡΡ‚ΠΎΡΠ²ΡˆΠΈΠΉ Π² ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½ΠΎΠΌ пространствС ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ со Π·Π½Π°Ρ‡ΠΊΠΎΠΌ Π² Ρ€ΡƒΠΊΠ΅, Ρ‚Ρ€Π΅Π²ΠΎΠΆΠ½ΠΎ Π²Π·ΠΌΠ°Ρ…Π½ΡƒΠ» ΠΈΠΌ, ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€, Π»Π΅Π³Π°Ρ‚ Π»Π΅Π³ΠΈΠΎΠ½Π°, ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ ΠΈ ΠΊΠΎΠ½Π²ΠΎΠΉ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ. + +ΠšΠ°Π²Π°Π»Π΅Ρ€ΠΈΠΉΡΠΊΠ°Ρ Π°Π»Π°, забирая всС ΡˆΠΈΡ€Π΅ рыси, Π²Ρ‹Π»Π΅Ρ‚Π΅Π»Π° Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡ΡŒ Π΅Π΅ Π² сторонкС, минуя скопищС Π½Π°Ρ€ΠΎΠ΄Π°, ΠΈ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΡƒΠ»ΠΊΡƒ ΠΏΠΎΠ΄ ΠΊΠ°ΠΌΠ΅Π½Π½ΠΎΠΉ стСной, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стлался Π²ΠΈΠ½ΠΎΠ³Ρ€Π°Π΄, ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅ΠΉ Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ ΠΏΡ€ΠΎΡΠΊΠ°ΠΊΠ°Ρ‚ΡŒ ΠΊ Лысой Π“ΠΎΡ€Π΅. + + +ЛСтящий Ρ€Ρ‹ΡΡŒΡŽ малСнький, ΠΊΠ°ΠΊ ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊ, Ρ‚Π΅ΠΌΠ½Ρ‹ΠΉ, ΠΊΠ°ΠΊ ΠΌΡƒΠ»Π°Ρ‚, ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ Π°Π»Ρ‹ – сириСц, Ρ€Π°Π²Π½ΡΡΡΡŒ с ΠŸΠΈΠ»Π°Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΎΠ½ΠΊΠΎ Π²Ρ‹ΠΊΡ€ΠΈΠΊΠ½ΡƒΠ» ΠΈ Π²Ρ‹Ρ…Π²Π°Ρ‚ΠΈΠ» ΠΈΠ· Π½ΠΎΠΆΠ΅Π½ ΠΌΠ΅Ρ‡. Злая вороная взмокшая лошадь ΡˆΠ°Ρ€Π°Ρ…Π½ΡƒΠ»Π°ΡΡŒ, поднялась Π½Π° Π΄Ρ‹Π±Ρ‹. Вбросив ΠΌΠ΅Ρ‡ Π² Π½ΠΎΠΆΠ½Ρ‹, ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ ΡƒΠ΄Π°Ρ€ΠΈΠ» ΠΏΠ»Π΅Ρ‚ΡŒΡŽ лошадь ΠΏΠΎ шСС, выровнял Π΅Π΅ ΠΈ поскакал Π² ΠΏΠ΅Ρ€Π΅ΡƒΠ»ΠΎΠΊ, пСрСходя Π² Π³Π°Π»ΠΎΠΏ. Π—Π° Π½ΠΈΠΌ ΠΏΠΎ Ρ‚Ρ€ΠΈ Π² ряд ΠΏΠΎΠ»Π΅Ρ‚Π΅Π»ΠΈ всадники Π² Ρ‚ΡƒΡ‡Π΅ ΠΏΡ‹Π»ΠΈ, Π·Π°ΠΏΡ€Ρ‹Π³Π°Π»ΠΈ ΠΊΠΎΠ½Ρ‡ΠΈΠΊΠΈ Π»Π΅Π³ΠΊΠΈΡ… Π±Π°ΠΌΠ±ΡƒΠΊΠΎΠ²Ρ‹Ρ… ΠΏΠΈΠΊ, ΠΌΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€Π° понСслись казавшиСся особо смуглыми ΠΏΠΎΠ΄ Π±Π΅Π»Ρ‹ΠΌΠΈ Ρ‚ΡŽΡ€Π±Π°Π½Π°ΠΌΠΈ Π»ΠΈΡ†Π° с вСсСло оскалСнными, ΡΠ²Π΅Ρ€ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ Π·ΡƒΠ±Π°ΠΌΠΈ. + +Поднимая Π΄ΠΎ Π½Π΅Π±Π° ΠΏΡ‹Π»ΡŒ, Π°Π»Π° Π²ΠΎΡ€Π²Π°Π»Π°ΡΡŒ Π² ΠΏΠ΅Ρ€Π΅ΡƒΠ»ΠΎΠΊ, ΠΈ ΠΌΠΈΠΌΠΎ ΠŸΠΈΠ»Π°Ρ‚Π° послСдним проскакал солдат с ΠΏΡ‹Π»Π°ΡŽΡ‰Π΅ΠΉ Π½Π° солнцС Ρ‚Ρ€ΡƒΠ±ΠΎΡŽ Π·Π° спиной. + +Π—Π°ΠΊΡ€Ρ‹Π²Π°ΡΡΡŒ ΠΎΡ‚ ΠΏΡ‹Π»ΠΈ Ρ€ΡƒΠΊΠΎΠΉ ΠΈ нСдовольно ΠΌΠΎΡ€Ρ‰Π° Π»ΠΈΡ†ΠΎ, ΠŸΠΈΠ»Π°Ρ‚ двинулся дальшС, ΡƒΡΡ‚Ρ€Π΅ΠΌΠ»ΡΡΡΡŒ ΠΊ Π²ΠΎΡ€ΠΎΡ‚Π°ΠΌ Π΄Π²ΠΎΡ€Ρ†ΠΎΠ²ΠΎΠ³ΠΎ сада, Π° Π·Π° Π½ΠΈΠΌ двинулся Π»Π΅Π³Π°Ρ‚, ΡΠ΅ΠΊΡ€Π΅Ρ‚Π°Ρ€ΡŒ ΠΈ ΠΊΠΎΠ½Π²ΠΎΠΉ. + +Π‘Ρ‹Π»ΠΎ ΠΎΠΊΠΎΠ»ΠΎ дСсяти часов ΡƒΡ‚Ρ€Π°. \ No newline at end of file diff --git a/docs/docs_ru/cookbook/agents/gigachat_phone_agent.ipynb b/docs/docs_ru/cookbook/agents/gigachat_phone_agent.ipynb index 3a7562ad21e9d..b039bfb3a4cf5 100644 --- a/docs/docs_ru/cookbook/agents/gigachat_phone_agent.ipynb +++ b/docs/docs_ru/cookbook/agents/gigachat_phone_agent.ipynb @@ -6,378 +6,13 @@ "source": [ "# АгСнт Β«ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²Β»\n", "\n", - "Π Π°Π·Π΄Π΅Π» содСрТит ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π³Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ модСль GigaChat, Ρ‡Ρ‚ΠΎΠ±Ρ‹:\n", - "\n", - "* Π Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ доступных модСлях Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² Π½Π° основС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….\n", - "* Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ характСристики Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°.\n", - "* ΠžΡ„ΠΎΡ€ΠΌΠ»ΡΡ‚ΡŒ Π·Π°ΠΊΠ°Π·Ρ‹ Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ².\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Установка зависимостСй\n", - "\n", - "Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° установитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ langchain-gigachat ΠΈ langgraph:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "pip install langchain-gigachat langgraph" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ инструмСнтов\n", - "\n", - "Π§Ρ‚ΠΎΠ±Ρ‹ Π°Π³Π΅Π½Ρ‚ ΠΌΠΎΠ³ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΎ доступных Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ…, создайтС массив с описаниСм ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "stuff_database = [\n", - " {\n", - " \"name\": \"iPhone 8 mini\",\n", - " \"price\": 300,\n", - " \"memory\": 128,\n", - " \"ram\": 8,\n", - " \"camera\": 12,\n", - " \"description\": \"Бамая дСшСвая модСль iPhone\",\n", - " },\n", - " {\n", - " \"name\": \"iPhone 14\",\n", - " \"price\": 1000,\n", - " \"memory\": 128,\n", - " \"ram\": 8,\n", - " \"camera\": 12,\n", - " \"description\": \"Π’Π΅Π»Π΅Ρ„ΠΎΠ½ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ, ΡƒΠΆΠ΅ сСгодня!\",\n", - " },\n", - " {\n", - " \"name\": \"Samsung Galaxy S23\",\n", - " \"price\": 900,\n", - " \"memory\": 256,\n", - " \"ram\": 12,\n", - " \"camera\": 108,\n", - " \"description\": \"ΠšΠ°ΠΌΠ΅Ρ€Π° такая острая, Ρ‡Ρ‚ΠΎ смоТСт ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ ваши ошибки\",\n", - " },\n", - " {\n", - " \"name\": \"Google Pixel 7\",\n", - " \"price\": 850,\n", - " \"memory\": 128,\n", - " \"ram\": 8,\n", - " \"camera\": 16,\n", - " \"description\": \"Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ стоковый Android ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Ρ„ΠΎΡ‚ΠΊΠΈ\",\n", - " },\n", - " {\n", - " \"name\": \"OnePlus 9T\",\n", - " \"price\": 700,\n", - " \"memory\": 128,\n", - " \"ram\": 8,\n", - " \"camera\": 48,\n", - " \"description\": \"Зарядка быстрСС, Ρ‡Π΅ΠΌ ваш ΠΊΠΎΡ„Π΅\",\n", - " },\n", - " {\n", - " \"name\": \"Xiaomi Mi 12\",\n", - " \"price\": 600,\n", - " \"memory\": 128,\n", - " \"ram\": 6,\n", - " \"camera\": 64,\n", - " \"description\": \"Π‘ΡŽΠ΄ΠΆΠ΅Ρ‚Π½Ρ‹ΠΉ Ρ„Π»Π°Π³ΠΌΠ°Π½ для Ρ†Π΅Π½ΠΈΡ‚Π΅Π»Π΅ΠΉ вкуса\",\n", - " },\n", - " {\n", - " \"name\": \"Sony Xperia 3\",\n", - " \"price\": 1100,\n", - " \"memory\": 256,\n", - " \"ram\": 12,\n", - " \"camera\": 20,\n", - " \"description\": \"Π’Π΅Π»Π΅Ρ„ΠΎΠ½ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ скучал ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ для ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹\",\n", - " },\n", - " {\n", - " \"name\": \"Huawei P60\",\n", - " \"price\": 800,\n", - " \"memory\": 128,\n", - " \"ram\": 8,\n", - " \"camera\": 50,\n", - " \"description\": \"Для Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ Π½ΠΎΡ‡Π½ΠΎΠΉ съСмки ΠΈ Π±Π΅Π· Google Play\",\n", - " },\n", - " {\n", - " \"name\": \"Nokia 10 PureView\",\n", - " \"price\": 750,\n", - " \"memory\": 128,\n", - " \"ram\": 6,\n", - " \"camera\": 48,\n", - " \"description\": \"Nokia Π²Π΅Ρ€Π½ΡƒΠ»Π°ΡΡŒ, ΠΈ Ρƒ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ Π·ΠΌΠ΅ΠΉΠΊΠ°!\",\n", - " },\n", - " {\n", - " \"name\": \"LG Velvet 2\",\n", - " \"price\": 650,\n", - " \"memory\": 128,\n", - " \"ram\": 8,\n", - " \"camera\": 32,\n", - " \"description\": \"ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Тизнь Ρ…ΠΎΡ€ΠΎΡˆΠ°\",\n", - " },\n", - " {\n", - " \"name\": \"Asus ROG Phone 6\",\n", - " \"price\": 1000,\n", - " \"memory\": 512,\n", - " \"ram\": 16,\n", - " \"camera\": 64,\n", - " \"description\": \"Π˜Π³Ρ€Π°ΠΉ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ„ΠΈ, заряТай ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ\",\n", - " },\n", - " {\n", - " \"name\": \"Motorola Edge Plus\",\n", - " \"price\": 700,\n", - " \"memory\": 128,\n", - " \"ram\": 8,\n", - " \"camera\": 108,\n", - " \"description\": \"ΠšΡ€Π°ΠΉ ΠΊ ΠΊΡ€Π°ΡŽ, пиксСль ΠΊ пиксСлю\",\n", - " },\n", - " {\n", - " \"name\": \"Realme X4 Pro\",\n", - " \"price\": 450,\n", - " \"memory\": 128,\n", - " \"ram\": 8,\n", - " \"camera\": 48,\n", - " \"description\": \"Экономия Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ Π² качСствС\",\n", - " },\n", - " {\n", - " \"name\": \"Oppo Find X4\",\n", - " \"price\": 900,\n", - " \"memory\": 256,\n", - " \"ram\": 12,\n", - " \"camera\": 50,\n", - " \"description\": \"Найди X, Π½ΠΎ Π±Π΅Π· ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ\",\n", - " },\n", - " {\n", - " \"name\": \"BlackBerry Secure\",\n", - " \"price\": 1200,\n", - " \"memory\": 128,\n", - " \"ram\": 8,\n", - " \"camera\": 12,\n", - " \"description\": \"Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π΅Ρ‰Ρ‘ ΠΏΠΎΠΌΠ½ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ физичСская ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°\",\n", - " },\n", - " {\n", - " \"name\": \"Fairphone 4\",\n", - " \"price\": 500,\n", - " \"memory\": 64,\n", - " \"ram\": 4,\n", - " \"camera\": 12,\n", - " \"description\": \"Π­Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для Π·Π°Π±ΠΎΡ‚Π»ΠΈΠ²ΠΎΠ³ΠΎ потрСбитСля\",\n", - " },\n", - "]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π³Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….\n", - "\n", - "Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ созданиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· python-ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ `@tool`.\n", - "Он ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² инструмСнт, доступный ΠΌΠΎΠ΄Π΅Π»ΠΈ для Π²Ρ‹Π·ΠΎΠ²Π°.\n", - "\n", - "> МодСль ориСнтируСтся ΠΊΠ°ΠΊ Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ Π½Π° описаниС ΠΈ Ρ‚ΠΈΠΏΡ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния.\n", - "> Π§Ρ‚ΠΎΠ±Ρ‹ модСль ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»Π° ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт, всС значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Dict\n", - "\n", - "from langchain.tools import tool\n", - "\n", - "\n", - "@tool\n", - "def get_all_phone_names() -> str:\n", - " \"\"\"Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ названия ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ всСх Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ\"\"\"\n", - " # ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ\n", - " print(\"\\033[92m\" + \"Bot requested get_all_phone_names()\" + \"\\033[0m\")\n", - " return \", \".join([stuff[\"name\"] for stuff in stuff_database])\n", - "\n", - "\n", - "@tool\n", - "def get_phone_data_by_name(name: str) -> Dict:\n", - " \"\"\"\n", - " Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π½Ρƒ Π² Π΄ΠΎΠ»Π»Π°Ρ€Π°Ρ…, характСристики ΠΈ описаниС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° ΠΏΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ названию ΠΌΠΎΠ΄Π΅Π»ΠΈ.\n", - "\n", - " Args:\n", - " name (str): Π’ΠΎΡ‡Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°.\n", - "\n", - " Returns:\n", - " Dict: Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ (Ρ†Π΅Π½Π°, характСристики ΠΈ описаниС).\n", - " \"\"\"\n", - " # ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ\n", - " print(\"\\033[92m\" + f\"Bot requested get_phone_data_by_name({name})\" + \"\\033[0m\")\n", - " for stuff in stuff_database:\n", - " if stuff[\"name\"] == name.strip():\n", - " return stuff\n", - "\n", - " return {\"error\": \"Π’Π΅Π»Π΅Ρ„ΠΎΠ½ с Ρ‚Π°ΠΊΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½\"}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π°Π³Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°ΠΊΠ°Π·Ρ‹:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "@tool\n", - "def create_order(name: str, phone: str) -> None:\n", - " \"\"\"\n", - " Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Π·Π°ΠΊΠ°Π· Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½.\n", - "\n", - " Args:\n", - " name (str): НазваниС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°.\n", - " phone (str): Π’Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\n", - "\n", - " Returns:\n", - " str: Бтатус Π·Π°ΠΊΠ°Π·Π°.\n", - " \"\"\"\n", - " # ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ\n", - " print(\"\\033[92m\" + f\"Bot requested create_order({name}, {phone})\" + \"\\033[0m\")\n", - " print(f\"!!! NEW ORDER !!! {name} {phone}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмного ΠΏΡ€ΠΎΠΌΠΏΡ‚Π° ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ€ΠΎΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ модСль:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "system_prompt = \"Π’Ρ‹ Π±ΠΎΡ‚-ΠΏΡ€ΠΎΠ΄Π°Π²Π΅Ρ† Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ². Ввоя Π·Π°Π΄Π°Ρ‡Π° ΠΏΡ€ΠΎΠ΄Π°Ρ‚ΡŒ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² ΠΎΡ‚ Π½Π΅Π³ΠΎ Π·Π°ΠΊΠ°Π·. Если Ρ‚Π΅Π±Π΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΠΉ ΠΈΡ… Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Π§Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»ΠΈ доступ ΠΊΠΎ всСм инструмСнтам, пСрСчислитС ΠΈΡ… Π² массивС:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "tools = [get_all_phone_names, get_phone_data_by_name, create_order]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π³Π΅Π½Ρ‚Π°\n", - "\n", - "ΠŸΠ΅Ρ€Π΅Π΄ созданиСм Π°Π³Π΅Π½Ρ‚Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ GigaChat ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ модСль, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с функциями:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_gigachat.chat_models import GigaChat\n", - "\n", - "model = GigaChat(\n", - " credentials=\"ΠΊΠ»ΡŽΡ‡_Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ\",\n", - " scope=\"GIGACHAT_API_PERS\",\n", - " model=\"GigaChat-Pro\",\n", - " verify_ssl_certs=False,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "> Бписок ΠΈ описаниС доступных ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈΡ‰ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ [МодСли GigaChat](https://developers.sber.ru/docs/ru/gigachat/models#modeli-dlya-generatsii).\n", - "> ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с функциями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat API β€” Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ [Π Π°Π±ΠΎΡ‚Π° с функциями](https://developers.sber.ru/docs/ru/gigachat/api/function-calling).\n", - "\n", - "Для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ запросов ΠΊ GigaChat ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΊΠ»ΡŽΡ‡ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ](https://developers.sber.ru/docs/ru/gigachat/quickstart/ind-using-api#poluchenie-avtorizatsionnyh-dannyh), ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² интСрфСйсС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GigaChat API.\n", - "\n", - "Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π°Π³Π΅Π½Ρ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π΅ΠΌΡƒ экзСмпляр класса GigaChat, ΠΈ массив доступных инструмСнтов `tools`:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.prebuilt import create_react_agent\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "agent = create_react_agent(model,\n", - " tools=tools,\n", - " checkpointer=MemorySaver(),\n", - " state_modifier=system_prompt)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° с Π°Π³Π΅Π½Ρ‚ΠΎΠΌ" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import time\n", - "\n", - "def chat(thread_id: str):\n", - " config = {\"configurable\": {\"thread_id\": thread_id}}\n", - " while(True):\n", - " rq = input(\"\\nHuman: \")\n", - " print(\"User: \", rq)\n", - " if rq == \"\":\n", - " break\n", - " resp = agent.invoke({\"messages\": [(\"user\", rq)]}, config=config)\n", - " print(\"Assistant: \", resp[\"messages\"][-1].content)\n", - " time.sleep(1) # For notebook capability\n", - "\n", - "chat(\"123\")" + "Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚ пСрСнСсСн Π² [основной Ρ€Π°Π·Π΄Π΅Π» с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ](/cookbook/gigachat_phone_agent.ipynb)." ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -391,7 +26,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/docs/docs_ru/cookbook/extraction.ipynb b/docs/docs_ru/cookbook/extraction.ipynb index cadb7eedf9a28..5c4be28643f6c 100644 --- a/docs/docs_ru/cookbook/extraction.ipynb +++ b/docs/docs_ru/cookbook/extraction.ipynb @@ -5,304 +5,7 @@ "id": "d28530a6-ddfd-49c0-85dc-b723551f6614", "metadata": {}, "source": [ - "# Быстрый старт\n", - "\n", - "Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° инструмСнтов/Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ." - ] - }, - { - "cell_type": "markdown", - "id": "4412def2-38e3-4bd0-bbf0-fb09ff9e5985", - "metadata": {}, - "source": [ - "## ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°\n", - "\n", - "Для получСния [структурированных Π΄Π°Π½Π½Ρ‹Ρ…](/docs/modules/model_io/chat/structured_output) ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ [ΠΌΠΎΠ΄Π΅Π»ΠΈ GigaChat с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ](https://developers.sber.ru/docs/ru/gigachat/models#modeli-dlya-generatsii)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "380c0425-6062-4837-8630-c220240c83b9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" - ] - } - ], - "source": [ - "!pip install langchain_gigachat -q" - ] - }, - { - "cell_type": "markdown", - "id": "54d6b970-2ea3-4192-951e-21237212b359", - "metadata": {}, - "source": [ - "## Π‘Ρ…Π΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ…\n", - "\n", - "Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ трСбуСтся ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· тСкста.\n", - "\n", - "Для описания ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° схСмы ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Pydantic." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "c141084c-fb94-4093-8d6a-81175d688e40", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Optional\n", - "\n", - "from pydantic import BaseModel, Field\n", - "\n", - "\n", - "class Person(BaseModel):\n", - " \"\"\"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅.\"\"\"\n", - "\n", - " # Π”ΠΎΠΊ-строка Π²Ρ‹ΡˆΠ΅, пСрСдаСтся Π² описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ\n", - " # ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ LLM\n", - "\n", - " # ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:\n", - " # * ВсС поля β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (`optional`). Π­Ρ‚ΠΎ позволяСт ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ нСописанныС поля.\n", - " # * Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поля Π΅ΡΡ‚ΡŒ описаниС (`description`), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся Π² модСль, Π² описании Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.\n", - " # Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ пописаниС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ качСство извлСчСния.\n", - " name: Optional[str] = Field(..., description=\"Имя Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°\")\n", - " hair_color: Optional[str] = Field(\n", - " ..., description=\"Π¦Π²Π΅Ρ‚ волос Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π·Π°ΠΏΠΎΠ»Π½ΠΈ Ссли извСстСн\"\n", - " )\n", - " height_in_meters: Optional[float] = Field(\n", - " ..., description=\"Высота Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² ΠΌΠ΅Ρ‚Ρ€Π°Ρ….\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "f248dd54-e36d-435a-b154-394ab4ed6792", - "metadata": {}, - "source": [ - "ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ схСм ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»:\n", - "\n", - "* ΠžΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ саму схСму. Описания ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² модСль ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ качСства извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.\n", - "* НС Π²Ρ‹Π½ΡƒΠΆΠ΄Π°ΠΉΡ‚Π΅ модСль ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (`Optional`), Ρ‡Ρ‚ΠΎ позволяСт ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ `None`, Ссли ΠΎΠ½Π° Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π°.\n", - "\n", - "## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экстрактора\n", - "\n", - "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ дСмонстрируСт ΠΊΠΎΠ΄ экстрактора ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° основС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ схСмы." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "a5e490f6-35ad-455e-8ae4-2bae021583ff", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Optional\n", - "\n", - "from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\n", - "from langchain_core.pydantic_v1 import BaseModel, Field\n", - "\n", - "# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΡ€ΠΎΠΌΠΏΡ‚: добавляСм инструкции ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ контСкст\n", - "# На этом этапС ΠΌΠΎΠΆΠ½ΠΎ:\n", - "# * Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ качСства извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ\n", - "# * ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ\n", - "prompt = ChatPromptTemplate.from_messages(\n", - " [\n", - " (\n", - " \"system\",\n", - " \"Π’Ρ‹ экспСрт Π² ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· тСкста. \"\n", - " \"ИзвлСкай Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· тСкста. \"\n", - " \"Если Ρ‚Ρ‹ Π½Π΅ знаСшь Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, \"\n", - " \"ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ, ΠΏΠΎΡΡ‚Π°Π²ΡŒ Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ null.\",\n", - " ),\n", - " # О Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ качСство Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²\n", - " # Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² рСкомСндациях\n", - " # MessagesPlaceholder('examples'),\n", - " (\"human\", \"{text}\"),\n", - " ]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "832bf6a1-8e0c-4b6a-aa37-12fe9c42a6d9", - "metadata": {}, - "source": [ - "Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ потрСбуСтся модСль GigaChat с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π²Ρ‹Π·ΠΎΠ²Π° инструмСтов/Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "04d846a6-d5cb-4009-ac19-61e3aac0177e", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_gigachat.chat_models.gigachat import GigaChat\n", - "\n", - "llm = GigaChat(\n", - " credentials=\"YOUT_AUTH_TOKEN\",\n", - " timeout=6000,\n", - " model=\"GigaChat-Max\",\n", - " top_p=0\n", - ")\n", - "\n", - "runnable = prompt | llm.with_structured_output(schema=Person)" - ] - }, - { - "cell_type": "markdown", - "id": "23582c0b-00ed-403f-a10e-3aeabf921f12", - "metadata": {}, - "source": [ - "Π’Ρ‹Π·ΠΎΠ² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "13165ac8-a1dc-44ce-a6ed-f52b577473e4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Person(name='Алан Π‘ΠΌΠΈΡ‚', hair_color='Π±Π»ΠΎΠ½Π΄ΠΈΠ½', height_in_meters=1.85)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "text = \"Алан Π‘ΠΌΠΈΡ‚ Π±Π»ΠΎΠ½Π΄ΠΈΠ½, 1.85 ΠΌΠ΅Ρ‚Ρ€Π° высотой\"\n", - "runnable.invoke({\"text\": text})" - ] - }, - { - "cell_type": "markdown", - "id": "28c5ef0c-b8d1-4e12-bd0e-e2528de87fcc", - "metadata": {}, - "source": [ - "## Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сущностСй\n", - "\n", - "Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π·Π°Π΄Π°Ρ‡Π° Π²Π°ΠΌ понадобится ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ· тСкста Π½Π΅ ΠΎΠ΄Π½Ρƒ ΡΡƒΡ‰ΡΠ½ΠΎΡ‚ΡŒ, Π° список.\n", - "\n", - "Для этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pydantic." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "591a0c16-7a17-4883-91ee-0d6d2fdb265c", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import List, Optional\n", - "\n", - "from pydantic import BaseModel, Field\n", - "\n", - "\n", - "class Person(BaseModel):\n", - " \"\"\"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅.\"\"\"\n", - "\n", - " # Π”ΠΎΠΊ-строка Π²Ρ‹ΡˆΠ΅, пСрСдаСтся Π² описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ\n", - " # ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ LLM\n", - "\n", - " # ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:\n", - " # * ВсС поля β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (`optional`). Π­Ρ‚ΠΎ позволяСт ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ нСописанныС поля.\n", - " # * Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поля Π΅ΡΡ‚ΡŒ описаниС (`description`), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся Π² модСль, Π² описании Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.\n", - " # Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ пописаниС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ качСство извлСчСния.\n", - " name: Optional[str] = Field(..., description=\"Имя Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°\")\n", - " hair_color: Optional[str] = Field(\n", - " ..., description=\"Π¦Π²Π΅Ρ‚ волос Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π·Π°ΠΏΠΎΠ»Π½ΠΈ Ссли извСстСн\"\n", - " )\n", - " height_in_meters: Optional[float] = Field(\n", - " ..., description=\"Высота Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² ΠΌΠ΅Ρ‚Ρ€Π°Ρ….\"\n", - " )\n", - "\n", - "\n", - "class Data(BaseModel):\n", - " \"\"\"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Π»ΡŽΠ΄ΡΡ….\"\"\"\n", - "\n", - " # Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»ΡŽΠ΄ΡΡ…\n", - " people: List[Person]" - ] - }, - { - "cell_type": "markdown", - "id": "5f5cda33-fd7b-481e-956a-703f45e40e1d", - "metadata": {}, - "source": [ - ":::important\n", - "\n", - "Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ прСдставлСн ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ самоС высокоС качСство.\n", - "\n", - "Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Руководства Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ качСство извлСчСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².\n", - "\n", - ":::" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "cf7062cc-1d1d-4a37-9122-509d1b87f0a6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(people=[Person(name='Π”ΠΆΠΎ', hair_color='Ρ‡Π΅Ρ€Π½Ρ‹Π΅', height_in_meters=1.75), Person(name='Анна', hair_color='Ρ‡Π΅Ρ€Π½Ρ‹Π΅', height_in_meters=1.65)])" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "runnable = prompt | llm.with_structured_output(schema=Data)\n", - "text = (\n", - " \"МоС имя Π”ΠΆΠΎ, ΠΌΠΎΠΈ волосы Ρ‡Π΅Ρ€Π½Ρ‹Π΅ ΠΈ я 1.75 ΠΌΠ΅Ρ‚Ρ€Π° высотой. \"\n", - " \"Π£ Анны Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ волосы ΠΊΠ°ΠΊ Ρƒ мСня ΠΈ ΠΎΠ½Π° Π½Π° 10 сантимСтров мСньшС мСня.\"\n", - ")\n", - "runnable.invoke({\"text\": text})" - ] - }, - { - "cell_type": "markdown", - "id": "fba1d770-bf4d-4de4-9e4f-7384872ef0dc", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "Когда схСма ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сущностСй, ΠΎΠ½Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ сущности ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ пустой список, Ссли Π² тСкстС Π½Π΅Ρ‚ подходящих Π΄Π°Π½Π½Ρ‹Ρ….\n", - "\n", - "Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ позволяСт явно Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ сущности Π±Π΅Π· нСобходимости Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒ модСль ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "id": "f07a7455-7de6-4a6f-9772-0477ef65e3dc", - "metadata": {}, - "source": [ - "## Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅\n", - "\n", - "* Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ [ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ ΠΊΠΎΠ΄Π°](/docs/use_cases/extraction/how_to/examples) для Π±ΠΎΠ»Π΅Π΅ эффСктивного извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.\n", - "* Π£Π·Π½Π°ΠΉΡ‚Π΅ [Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ](/docs/use_cases/extraction/how_to/handle_long_text), ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ тСкста ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ объСм контСкста ΠΌΠΎΠ΄Π΅Π»ΠΈ.\n", - "* Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ парсСры GigaChain для [извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²](/docs/use_cases/extraction/how_to/handle_files) Π²Ρ€ΠΎΠ΄Π΅ PDF.\n", - "* ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с [ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ получСния структурированной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ](/docs/use_cases/extraction/how_to/parse) ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с инструмСнтами ΠΈΠ»ΠΈ функциями. " + "Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚ пСрСнСсСн Π² [основной Ρ€Π°Π·Π΄Π΅Π» с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ](/cookbook/extraction.ipynb)." ] } ], diff --git a/docs/docs_ru/cookbook/gigachat_functions_agent.ipynb b/docs/docs_ru/cookbook/gigachat_functions_agent.ipynb index 1d225107bedac..b4aec350c216e 100644 --- a/docs/docs_ru/cookbook/gigachat_functions_agent.ipynb +++ b/docs/docs_ru/cookbook/gigachat_functions_agent.ipynb @@ -7,1170 +7,7 @@ "source": [ "# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π³Π΅Π½Ρ‚Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с функциями GigaChat\n", "\n", - "Π’ Ρ€Π°Π΄Π΅Π»Π΅ приводится ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания Π°Π³Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GigaChat.\n", - "\n", - ":::note\n", - "\n", - "ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ функциях β€” Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ GigaChat API [Π Π°Π±ΠΎΡ‚Π° с функциями](https://developers.sber.ru/docs/ru/gigachat/api/function-calling).\n", - "\n", - ":::\n", - "\n", - "Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π°Π³Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с трСмя функциями:\n", - "\n", - "* расчСта расстояния;\n", - "* ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ SMS-сообщСния;\n", - "* поиска Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ².\n", - "\n", - "Π’Π°ΠΊΠΆΠ΅ Π² этом Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π΄ΠΎΠΏ. ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ" - ] - }, - { - "cell_type": "markdown", - "id": "5e7543fa", - "metadata": {}, - "source": [ - "## ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅\n", - "\n", - "Установка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚ с GigaChat" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b6d00af1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" - ] - } - ], - "source": [ - "!pip install -U langchain_gigachat langgraph -q" - ] - }, - { - "cell_type": "markdown", - "id": "eb9d8c0a", - "metadata": {}, - "source": [ - "ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π°Π³Π΅Π½Ρ‚Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ GigaChat.\n", - "\n", - "Для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ модСль GigaChat-Pro ΠΈΠ»ΠΈ Max.\n", - "Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· доступных [ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ](https://developers.sber.ru/docs/ru/gigachat/models).\n", - "\n", - "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ для доступа ΠΊ GigaChat API Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° сайтС [developers.sber.ru](https://developers.sber.ru)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "205da1a7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Π’ случаС, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» .env для настройки Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, раскоммСнтируйтС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки\n", - "# !pip install python-dotenv -q\n", - "# from dotenv import find_dotenv, load_dotenv\n", - "# load_dotenv(find_dotenv())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b36cd44e", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_gigachat.chat_models import GigaChat\n", - "\n", - "giga = GigaChat(\n", - " credentials=\"ВАШ AUTHORIZATION KEY\", model=\"GigaChat-Pro\", verify_ssl_certs=False\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "f986347a", - "metadata": {}, - "source": [ - "## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ\n", - "\n", - "Для создания ΠΈ поисания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ смоТСт Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ модСль ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ `@tool`.\n", - "\n", - ":::tip\n", - "\n", - "МодСли GigaChat Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ описаны согласно ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ.\n", - "ΠŸΡ€ΠΈ описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ удСляйтС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ описанию структуры Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΅Π΅ использования.\n", - "\n", - "[НиТС](#functions-descriptions-example) Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ…ΠΎΡ€ΠΎΡˆΠΎ описанных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.\n", - "\n", - ":::\n", - "\n", - "### ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ БМБ-сообщСний" - ] - }, - { - "cell_type": "markdown", - "id": "d10f9f28", - "metadata": {}, - "source": [ - "Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ `@giga_tool` являСтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° `@tool` ΠΈΠ· LangChain, Π½ΠΎ добавляСт ΠΊ Π½Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ few-shot." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "921afeaa", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_gigachat.tools.giga_tool import giga_tool\n", - "from pydantic import BaseModel, Field\n", - "\n", - "\n", - "class SendSmsResult(BaseModel):\n", - " status: str = Field(description=\"Бтатус ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния\")\n", - " message: str = Field(description=\"Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ SMS\")\n", - "\n", - "\n", - "few_shot_examples = [\n", - " {\n", - " \"request\": \"МоТСшь Π»ΠΈ Ρ‚Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ SMS-сообщСниС Π½Π° Π½ΠΎΠΌΠ΅Ρ€ 123456789 с содСрТимым 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°?'\",\n", - " \"params\": {\"recipient\": \"123456789\", \"message\": \"ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°?\"},\n", - " }\n", - "]\n", - "\n", - "\n", - "@giga_tool(few_shot_examples=few_shot_examples)\n", - "def send_sms(\n", - " recipient: str = Field(description=\"НомСр Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° получатСля\"),\n", - " message: str = Field(description=\"Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ сообщСния\"),\n", - ") -> SendSmsResult:\n", - " \"\"\"ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ SMS-сообщСниС\"\"\"\n", - " print(f\"! send_sms to {recipient}, text: {message}\")\n", - " # Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° БМБ Ρ‡Π΅Ρ€Π΅Π· внСшний шлюз\n", - " return SendSmsResult(status=\"OK\", message=\"Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ!\")\n" - ] - }, - { - "cell_type": "markdown", - "id": "66be09d6", - "metadata": {}, - "source": [ - "## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π³Π΅Π½Ρ‚Π°\n", - "\n", - "Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π³Π΅Π½Ρ‚Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ create_react_agent ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° langgraph" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "53926a48", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "! send_sms to 2223334445, text: ΠΏΡ€ΠΈΠ²Π΅Ρ‚\n" - ] - }, - { - "data": { - "text/plain": [ - "'Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с тСкстом \"ΠΏΡ€ΠΈΠ²Π΅Ρ‚\" Π±Ρ‹Π»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π½Π° Π½ΠΎΠΌΠ΅Ρ€ 2223334445.'" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langchain_core.messages import AIMessage, HumanMessage, SystemMessage\n", - "from langgraph.prebuilt import create_react_agent\n", - "\n", - "functions = [send_sms]\n", - "giga_with_functions = giga.bind_functions(functions)\n", - "\n", - "agent_executor = create_react_agent(giga_with_functions, functions)\n", - "resp = agent_executor.invoke({\"messages\": [HumanMessage(content=\"ΠžΡ‚ΠΏΡ€Π°Π²ΡŒ смс с тСкстом ΠΏΡ€ΠΈΠ²Π΅Ρ‚ Π½Π° Π½ΠΎΠΌΠ΅Ρ€ 2223334445\")]})\n", - "resp['messages'][-1].content" - ] - }, - { - "cell_type": "markdown", - "id": "84443c6f", - "metadata": {}, - "source": [ - "Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π°Π³Π΅Π½Ρ‚Π° с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ для вСдСния Ρ‡Π°Ρ‚ΠΎΠ²" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "af0398d5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "User: ΠŸΡ€ΠΈΠ²Π΅Ρ‚\n", - "\u001b[93mBot: ЗдравствуйтС! Как я ΠΌΠΎΠ³Ρƒ Π’Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ сСгодня?\u001b[0m\n", - "User: Π§Ρ‚ΠΎ Ρ‚Ρ‹ ΡƒΠΌΠ΅Π΅ΡˆΡŒ?\n", - "\u001b[93mBot: Π― ΠΌΠΎΠ³Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ SMS-сообщСния. ΠœΠΎΠ³Ρƒ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π’Π°ΠΌ с этим?\u001b[0m\n", - "User: Π₯ΠΎΡ‡Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ смс\n", - "\u001b[93mBot: ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠΌΠΎΡ‡ΡŒ с этим. НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π’Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ½Π΅ Π½ΠΎΠΌΠ΅Ρ€ получатСля ΠΈ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ?\u001b[0m\n", - "User: На Π½ΠΎΠΌΠ΅Ρ€ 111222333444\n", - "\u001b[93mBot: ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ тСкст сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° этот Π½ΠΎΠΌΠ΅Ρ€.\u001b[0m\n", - "User: Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ - ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚!\n", - "! send_sms to 111222333444, text: ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚!\n", - "\u001b[93mBot: Π’Π°ΡˆΠ΅ сообщСниС \"ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚!\" Π±Ρ‹Π»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π½Π° Π½ΠΎΠΌΠ΅Ρ€ 111222333444.\u001b[0m\n" - ] - } - ], - "source": [ - "import time\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "agent_executor = create_react_agent(giga_with_functions, \n", - " functions, \n", - " checkpointer=MemorySaver(),\n", - " state_modifier=\"\"\"Π’Ρ‹ Π±ΠΎΡ‚ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ смс. \n", - "Бпроси Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ.\"\"\")\n", - "\n", - "def chat(agent_executor, thread_id: str):\n", - " config = {\"configurable\": {\"thread_id\": thread_id}}\n", - "\n", - " while True:\n", - " user_input = input(\"ΠšΠ»ΠΈΠ΅Π½Ρ‚: \")\n", - " if user_input == \"\":\n", - " break\n", - " print(f\"User: {user_input}\")\n", - " resp = agent_executor.invoke({\"messages\": [HumanMessage(content=user_input)]}, config=config)\n", - " bot_answer = resp['messages'][-1].content\n", - " print(\"\\033[93m\" + f\"Bot: {bot_answer}\" + \"\\033[0m\")\n", - " time.sleep(1) # Fix bug in Jupyter Notebook for VSCode\n", - "\n", - "chat(agent_executor, \"id_1\")" - ] - }, - { - "cell_type": "markdown", - "id": "904b74a9", - "metadata": {}, - "source": [ - "## Π Π°Π±ΠΎΡ‚Π° с нСсколькими функциями\n", - "\n", - "ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Ρ‰Π΅ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: для поиска Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² ΠΈ для расчСта расстояния.\n", - "\n", - "### Ѐункция поиска Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ²\n", - "\n", - "Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ приводится функцися посика Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² Π½Π° основС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "b5177fcd", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import List, Optional\n", - "\n", - "\n", - "class SearchMoviesResult(BaseModel):\n", - " movies: List[str] = Field(\n", - " description=\"Бписок Π½Π°Π·Π²Π°Π½ΠΈΠΉ Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ критСриям поиска\"\n", - " )\n", - "\n", - "\n", - "few_shot_examples = [\n", - " {\"request\": \"Найди всС Ρ„ΠΈΠ»ΡŒΠΌΡ‹ ΠΆΠ°Π½Ρ€Π° комСдия\", \"params\": {\"genre\": \"комСдия\"}}\n", - "]\n", - "\n", - "\n", - "@giga_tool(few_shot_examples=few_shot_examples)\n", - "def search_movies(\n", - " genre: Optional[str] = Field(None, description=\"Π–Π°Π½Ρ€ Ρ„ΠΈΠ»ΡŒΠΌΠ°\"),\n", - " year: Optional[int] = Field(None, description=\"Π“ΠΎΠ΄ выпуска Ρ„ΠΈΠ»ΡŒΠΌΠ°\"),\n", - " actor: Optional[str] = Field(None, description=\"Имя Π°ΠΊΡ‚Π΅Ρ€Π°, снимавшСгося Π² Ρ„ΠΈΠ»ΡŒΠΌΠ΅\"),\n", - ") -> SearchMoviesResult:\n", - " \"\"\"Поиск Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² Π½Π° основС Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π²\"\"\"\n", - " print(f\"! search_movies genre {genre}, year: {year}, actor: {actor}\")\n", - " # Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° БМБ Ρ‡Π΅Ρ€Π΅Π· внСшний шлюз\n", - " return SearchMoviesResult(movies=[\"ΠžΠΏΠ΅Π½Π³Π΅ΠΉΠΌΠ΅Ρ€\"])" - ] - }, - { - "cell_type": "markdown", - "id": "de13f00b", - "metadata": {}, - "source": [ - "### Ѐункция расчСта расстояний\n", - "\n", - "Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ приводится функция, которая вычисляСт расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΡƒΠΊΡ‚Π°ΠΌΠΈ." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "891a896e", - "metadata": {}, - "outputs": [], - "source": [ - "class TripDistanceResult(BaseModel):\n", - " distance: int = Field(\n", - " description=\"РасстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ мСстополоТСниСм Π² ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€Π°Ρ…\"\n", - " )\n", - "\n", - "\n", - "few_shot_examples = [\n", - " {\n", - " \"request\": \"Насколько Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ ΠœΠΎΡΠΊΠ²Ρ‹ Π΄ΠΎ Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π°?\",\n", - " \"params\": {\"start_location\": \"Москва\", \"end_location\": \"Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³\"},\n", - " }\n", - "]\n", - "\n", - "\n", - "@giga_tool(few_shot_examples=few_shot_examples)\n", - "def calculate_trip_distance(\n", - " start_location: str = Field(description=\"ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ мСстополоТСниС\"),\n", - " end_location: str = Field(description=\"ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ мСстополоТСниС\"),\n", - ") -> TripDistanceResult:\n", - " \"\"\"Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя мСстополоТСниями.\"\"\"\n", - " print(\n", - " f\"! calculate_trip_distance start_location {start_location}, end_location: {end_location}\"\n", - " )\n", - " return TripDistanceResult(distance=650)" - ] - }, - { - "cell_type": "markdown", - "id": "a0f01b2b", - "metadata": {}, - "source": [ - "ΠŸΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π°Π³Π΅Π½Ρ‚ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π½Π΅ΠΌΡƒ с подходящими запросами." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e3ddc5dd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "User: Найди Ρ„ΠΈΠ»ΡŒΠΌΡ‹ Π² ΠΆΠ°Π½Ρ€Π΅ биография 2023 Π³ΠΎΠ΄Π°\n", - "! search_movies genre биография, year: 2023, actor: annotation=Union[str, NoneType] required=False default=None description='Имя Π°ΠΊΡ‚Π΅Ρ€Π°, снимавшСгося Π² Ρ„ΠΈΠ»ΡŒΠΌΠ΅'\n", - "\u001b[93mBot: Π’ 2023 Π³ΠΎΠ΄Ρƒ Π²Ρ‹ΡˆΠ΅Π» Ρ„ΠΈΠ»ΡŒΠΌ Π² ΠΆΠ°Π½Ρ€Π΅ Π±ΠΈΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ \"ΠžΠΏΠ΅Π½Π³Π΅ΠΉΠΌΠ΅Ρ€\".\u001b[0m\n", - "User: РасстояниС ΠΎΡ‚ ΠœΠΎΡΠΊΠ²Ρ‹ Π΄ΠΎ ΠŸΠΈΡ‚Π΅Ρ€Π°\n", - "! calculate_trip_distance start_location Москва, end_location: Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³\n", - "\u001b[93mBot: РасстояниС ΠΏΠΎ Π΄ΠΎΡ€ΠΎΠ³Π΅ ΠΎΡ‚ ΠœΠΎΡΠΊΠ²Ρ‹ Π΄ΠΎ Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π° составляСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 650 ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€ΠΎΠ².\u001b[0m\n" - ] - } - ], - "source": [ - "functions = [send_sms, search_movies, calculate_trip_distance]\n", - "giga_with_functions = giga.bind_functions(functions)\n", - "agent_executor = create_react_agent(giga_with_functions, \n", - " functions, \n", - " checkpointer=MemorySaver())\n", - "\n", - "chat(agent_executor, thread_id=\"id_321\")" - ] - }, - { - "cell_type": "markdown", - "id": "7fb27b941602401d91542211134fc71a", - "metadata": { - "collapsed": false - }, - "source": [ - "## Ѐункция Ρ€Π΅Π°ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚\n", - "Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ рассмотрим созданиС Ρ‚ΡƒΠ»ΠΎΠ², Ρ‡Π΅Ρ€Π΅Π· класс BaseTool.\n", - "Π§Π΅Ρ€Π΅Π· наслСдованиС класса BaseTool, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΡƒΠ»Ρ‹ с async Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.\n", - "\n", - "πŸš¨ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ прСобразования Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ условия:\n", - "- Π£ всСх ΠΏΠΎΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ Ρ‚ΠΈΠΏ\n", - "- Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Optional поля Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ default значСния" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "acae54e37e7d407bbb7b55eff062a284", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from typing import Literal, Optional, Type\n", - "\n", - "from langchain_core.callbacks import CallbackManagerForToolRun\n", - "from langchain_core.tools import BaseTool\n", - "from langchain_gigachat.tools.giga_tool import FewShotExamples\n", - "\n", - "\n", - "class PlayerReactionsInput(BaseModel):\n", - " reaction: Literal[\"add_like\", \"remove_like\", \"add_dislike\"] = Field(\n", - " description=\"\"\"ДСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ:\n", - "- add_like - ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π»Π°ΠΉΠΊ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ΅, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ;\n", - "- remove_like - ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π»Π°ΠΉΠΊ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π°ΡƒΠ΄ΠΈΠΎΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ;\n", - "- add_dislike - ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΈΠ·Π»Π°ΠΉΠΊ, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° ΡΠ»ΡƒΠ΄ΡƒΡŽΡ‰ΠΈΠΉ.\n", - "ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ add_dislike устанавливаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно проявляСт Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ. Если ΠΎΠ½ просто просит ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅ΠΊ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ, Ρ‚ΠΎ это Π½Π΅ являСтся Ρ€Π΅Π°ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.\"\"\" # noqa\n", - " )\n", - " content_type: Optional[\n", - " Literal[\n", - " \"track\",\n", - " \"artist\",\n", - " \"album\",\n", - " \"playlist\",\n", - " \"release\",\n", - " \"podcast\",\n", - " \"podcast_episode\",\n", - " \"audiobook\",\n", - " \"audiobook_chapter\",\n", - " ]\n", - " ] = Field(\n", - " description=(\n", - " \"Π’ΠΈΠΏ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ примСняСтся дСйствиС Π² соотвСтствии с запросом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. \" # noqa\n", - " \"ЗаполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно ΡƒΠΊΠ°Π·Π°Π» Ρ‚ΠΈΠΏ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.\"\n", - " )\n", - " )\n", - "\n", - "\n", - "class PlayerReactionsOutput(BaseModel):\n", - " status: Literal[\"success\", \"fail\"] = Field(\n", - " description=\"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ дСйствиС\"\n", - " )\n", - " error: Optional[str] = Field(\n", - " description=\"ВСкст ошибки Π² случаС, Ссли status == fail\", default=None\n", - " )\n", - "\n", - "\n", - "class PlayerReactionsTool(BaseTool):\n", - " name: str = \"player_reactions\"\n", - " description: str = (\n", - " \"Ѐункция ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚. \"\n", - " \"Ѐункция вызываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС, Ссли Π½Π° устройствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.\\n\" # noqa\n", - " \"Π’ случаС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΠΎΠ½ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ.\\n\" # noqa\n", - " \"Π’ случаС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ. \" # noqa\n", - " \"Π’ своСм ΠΎΡ‚Π²Π΅Ρ‚Π΅ сообщи ΠΎΠ± этом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.\\n\"\n", - " \"ПослС Π²Ρ‹Π·ΠΎΠ²Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΠΉ Π² соотвСтствии со своим Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΎΠΌ, \"\n", - " \"Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ, Π½ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ (Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 7 слов) ΠΈ Π½Π΅ Π·Π°Π΄Π°Π²Π°ΠΉ вопросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, \"\n", - " \"Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.\\n\"\n", - " \"Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΆΠ΅ оставлял Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Π½Π° ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, \"\n", - " \"Ρ‚ΠΎ информация ΠΎΠ± этом Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° Π² ΠΏΠΎΠ»Π΅ error. \"\n", - " \"Π’ случаС ошибки ΠΎΡ‚Π²Π΅Ρ‡Π°ΠΉ Π² соотвСтствии со своим Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΎΠΌ ΠΈ тСкстом ΠΈΠ· поля error.\" # noqa\n", - " )\n", - " args_schema: Type[BaseModel] = PlayerReactionsInput\n", - " return_schema: Type[BaseModel] = PlayerReactionsOutput\n", - " few_shot_examples: FewShotExamples = [\n", - " {\"request\": \"Π›Π°ΠΉΠΊ\", \"params\": {\"reaction\": \"add_like\"}},\n", - " {\"request\": \"Π”ΠΈΠ·Π»Π°ΠΉΠΊ\", \"params\": {\"reaction\": \"add_dislike\"}},\n", - " {\"request\": \"ΡƒΠ±Π΅Ρ€ΠΈ Π»Π°ΠΉΠΊ\", \"params\": {\"reaction\": \"remove_like\"}},\n", - " {\"request\": \"добавь Π² плСйлист\", \"params\": {\"reaction\": \"add_like\"}},\n", - " {\"request\": \"ΡƒΠ΄Π°Π»ΠΈ ΠΈΠ· плСйлиста\", \"params\": {\"reaction\": \"remove_like\"}},\n", - " {\n", - " \"request\": \"Π”ΠΎΠ±Π°Π²ΡŒ артиста Π² ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ΅\",\n", - " \"params\": {\"reaction\": \"add_like\", \"content_type\": \"artist\"},\n", - " },\n", - " {\n", - " \"request\": \"МнС нравится это альбом\",\n", - " \"params\": {\"reaction\": \"add_like\", \"content_type\": \"album\"},\n", - " },\n", - " ]\n", - "\n", - " def _run(\n", - " self,\n", - " reaction: str,\n", - " content_type: Optional[str] = None,\n", - " run_manager: Optional[CallbackManagerForToolRun] = None,\n", - " ) -> PlayerReactionsOutput:\n", - " \"\"\"Use the tool.\"\"\"\n", - " print(f\"! player_reaction reaction {reaction}, content_type: {content_type}\")\n", - " if reaction == \"add_dislike\":\n", - " return PlayerReactionsOutput(status=\"fail\", error=\"Π”ΠΈΠ·Π»Π°ΠΉΠΊΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ\")\n", - " return PlayerReactionsOutput(status=\"success\")" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "9a63283cbaf04dbcab1f6479b197f3a8", - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "User: Π›Π°ΠΉΠΊ этому Ρ‚Ρ€Π΅ΠΊΡƒ\n", - "! player_reaction reaction add_like, content_type: track\n", - "\u001b[93mBot: Π’Π°Ρˆ Π»Π°ΠΉΠΊ зафиксирован! Π’Ρ€Π΅ΠΊ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ.\u001b[0m\n", - "User: ΠŸΠΎΡΡ‚Π°Π²ΡŒ Π΄ΠΈΠ·Π»Π°ΠΉΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Π°Π»ΡŒΠ±ΠΎΠΌΡƒ\n", - "! player_reaction reaction add_dislike, content_type: album\n", - "\u001b[93mBot: Ой, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΠΎΡ…ΠΎΠΆΠ΅, Π΄ΠΈΠ·Π»Π°ΠΉΠΊΠΈ для альбомов сСйчас нСдоступны. ΠœΠΎΠΆΠ΅Ρ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π·?\u001b[0m\n" - ] - } - ], - "source": [ - "functions = [PlayerReactionsTool()]\n", - "giga_with_functions = giga.bind_functions(functions)\n", - "agent_executor = create_react_agent(giga_with_functions, \n", - " functions, \n", - " checkpointer=MemorySaver(), debug=False)\n", - "\n", - "chat(agent_executor, thread_id=\"id_324\")" - ] - }, - { - "cell_type": "markdown", - "id": "8dd0d8092fe74a7c96281538738b07e2", - "metadata": { - "collapsed": false - }, - "source": [ - "## Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚ΡƒΠ»ΠΎΠ² (Π±Π΅Π· запуска)\n", - "### ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "72eea5119410473aa328ad9291626812", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ классу подкладываСтся Π² JSON Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΡΡ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ\n", - "# Π² ΠΏΠΎΠ»Π΅ \"description\"\n", - "class Reminder(BaseModel):\n", - " \"\"\"ΠœΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ напоминания.\"\"\"\n", - "\n", - " id: Optional[str] = Field(description=\"Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ напоминания.\", default=None)\n", - " cron: Optional[str] = Field(\n", - " description=(\n", - " \"ОписаниС пСриодичности напоминания. \"\n", - " \"Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ΅ описаниС пСрСодичности напоминания. \"\n", - " \"Если ΠΏΠΎΠ»Π΅ отсутствуСт, Ρ‚ΠΎ Ρƒ напоминания Π½Π΅Ρ‚ пСриодичности (Π΅Π΄ΠΈΠ½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ΅).\"\n", - " ), default=None\n", - " )\n", - " title: Optional[str] = Field(\n", - " description=\"НазваниС напоминания, ΠΎ Ρ‡Π΅ΠΌ Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ.\", default=None\n", - " )\n", - " devices: Optional[List[str]] = Field(\n", - " description=\"Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ устройств, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ привязаны напоминания\", default=None\n", - " )\n", - " reminderTime: Optional[str] = Field(description=\"Π”Π°Ρ‚Π° ΠΈ врСмя старта напоминания.\", default=None)\n", - " createdAt: Optional[str] = Field(description=\"Π”Π°Ρ‚Π° ΠΈ врСмя создания напоминания.\", default=None)\n", - "\n", - "\n", - "class GetReminderInput(BaseModel):\n", - " title: Optional[str] = Field(description=\"ВСкст напоминания\", default=None)\n", - " date_time: Optional[str] = Field(\n", - " description=\"ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя ΠΈ Π΄Π°Ρ‚Π° напоминания Π½Π° русском языкС\", default=None\n", - " )\n", - " device_name: Optional[str] = Field(\n", - " description=\"НазваниС устройства, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\", default=None\n", - " )\n", - " room: Optional[str] = Field(\n", - " description=\"НазваниС ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\", default=None\n", - " )\n", - "\n", - "\n", - "class GetReminderOutput(BaseModel):\n", - " \"\"\"ΠžΡ‚Π²Π΅Ρ‚ Π½Π° get_reminder\"\"\"\n", - "\n", - " status: Literal[\"success\", \"fail\"] = Field(\n", - " description=\"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ список установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\", default=None\n", - " )\n", - " error: Optional[str] = Field(\n", - " description=\"ВСкст ошибки Π² случаС, Ссли status == fail\", default=None\n", - " )\n", - " items: Optional[List[Reminder]] = Field(\n", - " description=(\n", - " \"Бписок установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ. \"\n", - " \"Π’ спискС пСрСчислСны ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ (id), \"\n", - " \"Π΄Π°Ρ‚Π° ΠΈ врСмя старта напоминания (reminderTime), \"\n", - " \"ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ напоминания Π² Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (cron), \"\n", - " \"Π½Π°Π·Π²Π°Π½ΠΈΠ΅ напоминания (title), \"\n", - " \"Π΄Π°Ρ‚Π° ΠΈ врСмя создания напоминания (createdAt).\"\n", - " ), default=None\n", - " )\n", - "\n", - "\n", - "class GetReminderTool(BaseTool):\n", - " name: str = \"get_reminder\"\n", - " description: str = (\n", - " \"ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх установлСнных напоминаниях. \" # noqa\n", - " \"Π’Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ id Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ. \" # noqa\n", - " \"Π’ случаС Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id, \" # noqa\n", - " \"Ρ‚ΠΎ сначала Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для получСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° id ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ пустым сообщСниСм, \" # noqa\n", - " \"Π° Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹Π·ΠΎΠ²ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для выполнСния запроса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\\n\" # noqa\n", - " \"ПослС Π²Ρ‹Π·ΠΎΠ²Π° Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ стилС: \" # noqa\n", - " '\"Π£ вас установлСно 2 напоминания. Π§Π΅Ρ€Π΅Π· 10 ΠΌΠΈΠ½ΡƒΡ‚ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄ΡƒΡ…ΠΎΠ²ΠΊΡƒ Π½Π° ΠΊΡƒΡ…Π½Π΅, Π° Π·Π°Π²Ρ‚Ρ€Π° Π² 3 часа ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² гости.' # noqa\n", - " )\n", - " args_schema: Type[BaseModel] = GetReminderInput\n", - " return_schema: Type[BaseModel] = GetReminderOutput\n", - " few_shot_examples: FewShotExamples = [\n", - " {\"request\": \"ΠΌΠΎΠΈ напоминания\", \"params\": {}},\n", - " {\"request\": \"ΡƒΠ΄Π°Π»ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΊΡƒ Π½Π° Π·Π°Π²Ρ‚Ρ€Π° Π² ΠΏΡΡ‚ΡŒ\", \"params\": {}},\n", - " {\n", - " \"request\": \"пСрСнСси Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π΄Ρ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ°ΠΌΡƒ Π½Π° ΡˆΠ΅ΡΡ‚ΡŒ Π²Π΅Ρ‡Π΅Ρ€Π°\",\n", - " \"params\": {},\n", - " },\n", - " {\"request\": \"ΠΊΠ°ΠΊΠΎΠ΅ Ρƒ мСня количСство Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\", \"params\": {}},\n", - " {\"request\": \"ΠΎΠ·Π²ΡƒΡ‡ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΊΠΈ\", \"params\": {}},\n", - " ]\n", - "\n", - " def _run(\n", - " self,\n", - " title: Optional[str] = None,\n", - " date_time: Optional[str] = None,\n", - " device_name: Optional[str] = None,\n", - " room: Optional[str] = None,\n", - " run_manager: Optional[CallbackManagerForToolRun] = None,\n", - " ) -> GetReminderOutput:\n", - " \"\"\"Π›ΠΎΠ³ΠΈΠΊΠ° Ρ‚ΡƒΠ»Π°\"\"\"\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "id": "8edb47106e1a46a883d545849b8ab81b", - "metadata": { - "collapsed": false - }, - "source": [ - "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ схСму, которая гСнСрируСтся для API GigaChat" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "10185d26023b46108eb7d9f57d49d2b3", - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"name\": \"get_reminder\",\n", - " \"description\": \"ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх установлСнных напоминаниях. Π’Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ id Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ. Π’ случаС Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id, Ρ‚ΠΎ сначала Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для получСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° id ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ пустым сообщСниСм, Π° Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹Π·ΠΎΠ²ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для выполнСния запроса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\\nПослС Π²Ρ‹Π·ΠΎΠ²Π° Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ стилС: \\\"Π£ вас установлСно 2 напоминания. Π§Π΅Ρ€Π΅Π· 10 ΠΌΠΈΠ½ΡƒΡ‚ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄ΡƒΡ…ΠΎΠ²ΠΊΡƒ Π½Π° ΠΊΡƒΡ…Π½Π΅, Π° Π·Π°Π²Ρ‚Ρ€Π° Π² 3 часа ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² гости.\",\n", - " \"parameters\": {\n", - " \"description\": \"ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх установлСнных напоминаниях. Π’Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ id Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ. Π’ случаС Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id, Ρ‚ΠΎ сначала Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для получСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° id ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ пустым сообщСниСм, Π° Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹Π·ΠΎΠ²ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для выполнСния запроса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\\nПослС Π²Ρ‹Π·ΠΎΠ²Π° Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ стилС: \\\"Π£ вас установлСно 2 напоминания. Π§Π΅Ρ€Π΅Π· 10 ΠΌΠΈΠ½ΡƒΡ‚ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄ΡƒΡ…ΠΎΠ²ΠΊΡƒ Π½Π° ΠΊΡƒΡ…Π½Π΅, Π° Π·Π°Π²Ρ‚Ρ€Π° Π² 3 часа ΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² гости.\",\n", - " \"properties\": {\n", - " \"title\": {\n", - " \"default\": null,\n", - " \"description\": \"ВСкст напоминания\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"date_time\": {\n", - " \"default\": null,\n", - " \"description\": \"ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя ΠΈ Π΄Π°Ρ‚Π° напоминания Π½Π° русском языкС\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"device_name\": {\n", - " \"default\": null,\n", - " \"description\": \"НазваниС устройства, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"room\": {\n", - " \"default\": null,\n", - " \"description\": \"НазваниС ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\",\n", - " \"type\": \"string\"\n", - " }\n", - " },\n", - " \"type\": \"object\"\n", - " },\n", - " \"return_parameters\": {\n", - " \"description\": \"ΠžΡ‚Π²Π΅Ρ‚ Π½Π° get_reminder\",\n", - " \"properties\": {\n", - " \"status\": {\n", - " \"default\": null,\n", - " \"description\": \"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ список установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\",\n", - " \"enum\": [\n", - " \"success\",\n", - " \"fail\"\n", - " ],\n", - " \"type\": \"string\"\n", - " },\n", - " \"error\": {\n", - " \"default\": null,\n", - " \"description\": \"ВСкст ошибки Π² случаС, Ссли status == fail\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"items\": {\n", - " \"default\": null,\n", - " \"description\": \"Бписок установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ. Π’ спискС пСрСчислСны ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ (id), Π΄Π°Ρ‚Π° ΠΈ врСмя старта напоминания (reminderTime), ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ напоминания Π² Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (cron), Π½Π°Π·Π²Π°Π½ΠΈΠ΅ напоминания (title), Π΄Π°Ρ‚Π° ΠΈ врСмя создания напоминания (createdAt).\",\n", - " \"items\": {\n", - " \"description\": \"ΠœΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ напоминания.\",\n", - " \"properties\": {\n", - " \"id\": {\n", - " \"default\": null,\n", - " \"description\": \"Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ напоминания.\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"cron\": {\n", - " \"default\": null,\n", - " \"description\": \"ОписаниС пСриодичности напоминания. Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ΅ описаниС пСрСодичности напоминания. Если ΠΏΠΎΠ»Π΅ отсутствуСт, Ρ‚ΠΎ Ρƒ напоминания Π½Π΅Ρ‚ пСриодичности (Π΅Π΄ΠΈΠ½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ΅).\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"title\": {\n", - " \"default\": null,\n", - " \"description\": \"НазваниС напоминания, ΠΎ Ρ‡Π΅ΠΌ Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ.\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"devices\": {\n", - " \"default\": null,\n", - " \"description\": \"Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ устройств, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ привязаны напоминания\",\n", - " \"items\": {\n", - " \"type\": \"string\"\n", - " },\n", - " \"type\": \"array\"\n", - " },\n", - " \"reminderTime\": {\n", - " \"default\": null,\n", - " \"description\": \"Π”Π°Ρ‚Π° ΠΈ врСмя старта напоминания.\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"createdAt\": {\n", - " \"default\": null,\n", - " \"description\": \"Π”Π°Ρ‚Π° ΠΈ врСмя создания напоминания.\",\n", - " \"type\": \"string\"\n", - " }\n", - " },\n", - " \"type\": \"object\"\n", - " },\n", - " \"type\": \"array\"\n", - " }\n", - " },\n", - " \"type\": \"object\"\n", - " },\n", - " \"few_shot_examples\": [\n", - " {\n", - " \"request\": \"ΠΌΠΎΠΈ напоминания\",\n", - " \"params\": {}\n", - " },\n", - " {\n", - " \"request\": \"ΡƒΠ΄Π°Π»ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΊΡƒ Π½Π° Π·Π°Π²Ρ‚Ρ€Π° Π² ΠΏΡΡ‚ΡŒ\",\n", - " \"params\": {}\n", - " },\n", - " {\n", - " \"request\": \"пСрСнСси Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π΄Ρ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ°ΠΌΡƒ Π½Π° ΡˆΠ΅ΡΡ‚ΡŒ Π²Π΅Ρ‡Π΅Ρ€Π°\",\n", - " \"params\": {}\n", - " },\n", - " {\n", - " \"request\": \"ΠΊΠ°ΠΊΠΎΠ΅ Ρƒ мСня количСство Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\",\n", - " \"params\": {}\n", - " },\n", - " {\n", - " \"request\": \"ΠΎΠ·Π²ΡƒΡ‡ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΊΠΈ\",\n", - " \"params\": {}\n", - " }\n", - " ]\n", - "}\n" - ] - } - ], - "source": [ - "import json\n", - "\n", - "from langchain_gigachat.utils.function_calling import convert_to_gigachat_function\n", - "\n", - "print(\n", - " json.dumps(\n", - " convert_to_gigachat_function(GetReminderTool()), indent=2, ensure_ascii=False\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "8763a12b2bbd4a93a75aff182afb95dc", - "metadata": { - "collapsed": false - }, - "source": [ - "### ИзмСнСниС Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "7623eae2785240b9bd12b16a66d81610", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "class ChangeReminderInput(BaseModel):\n", - " id: str = Field(description=\"id напоминания\")\n", - " title: Optional[str] = Field(description=\"Новый тСкст напоминания\")\n", - " date_time: Optional[str] = Field(\n", - " description=\"НовыС врСмя ΠΈ Π΄Π°Ρ‚Π° напоминания Π½Π° русском языкС. \"\n", - " \"ΠŸΠ΅Ρ€Π΅Π΄Π°ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сказал ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π΅ мСняя Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.\"\n", - " )\n", - " device_name: Optional[str] = Field(\n", - " description=\"НовоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ устройства, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\" # noqa\n", - " )\n", - "\n", - "\n", - "class ChangeReminderOutput(BaseModel):\n", - " status: Literal[\"success\", \"fail\"] = Field(\n", - " description=\"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ список установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\"\n", - " )\n", - " error: Optional[str] = Field(\n", - " description=\"ВСкст ошибки Π² случаС, Ссли status == fail\"\n", - " )\n", - " reminder: Optional[Reminder] = Field(description=\"ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ созданного напоминания\")\n", - "\n", - "\n", - "class ChangeReminderTool(BaseTool):\n", - " name: str = \"change_reminder\"\n", - " description: str = (\n", - " \"Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΠΎ id.\\n\"\n", - " \"Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, \"\n", - " \"Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти, \"\n", - " \"Ρ‚ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ попроси ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.\\n\"\n", - " \"Если просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅, \"\n", - " \"Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, \"\n", - " \"Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, \"\n", - " \"Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, \"\n", - " \"пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.\\n\"\n", - " \"Если просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, \"\n", - " \"указывая ΠΊΠ°ΠΊΠΎΠ΅, Π½ΠΎ Π½Π΅ указывая измСнСния, \"\n", - " \"Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, \"\n", - " \"Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, \"\n", - " \"пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, \"\n", - " \"ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу, ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти.\\n\"\n", - " \"Если просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, \"\n", - " \"указывая ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, \"\n", - " \"Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, \"\n", - " \"Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, \"\n", - " \"ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π·ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ измСнСния напоминаня ΠΏΠΎ id.\\n\\n\" # noqa\n", - " \"Π’Ρ‹Π·Ρ‹Π²Π°ΠΉ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ id ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅.\" # noqa\n", - " )\n", - " args_schema: Type[BaseModel] = ChangeReminderInput\n", - " return_schema: Type[BaseModel] = ChangeReminderOutput\n", - " few_shot_examples: FewShotExamples = [\n", - " {\n", - " \"request\": \"Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ с id 123 Π½Π° сСгодня Π² 19 30\",\n", - " \"params\": {\"id\": \"123\", \"date_time\": \"сСгодня Π² 19 30\"},\n", - " }\n", - " ]\n", - "\n", - " def _run(\n", - " self,\n", - " id: str, # noqa\n", - " title: Optional[str] = None,\n", - " date_time: Optional[str] = None,\n", - " device_name: Optional[str] = None,\n", - " run_manager: Optional[CallbackManagerForToolRun] = None,\n", - " ) -> ChangeReminderOutput:\n", - " \"\"\"Π›ΠΎΠ³ΠΈΠΊΠ° Ρ‚ΡƒΠ»Π°\"\"\"\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "id": "7cdc8c89c7104fffa095e18ddfef8986", - "metadata": { - "collapsed": false - }, - "source": [ - "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ схСму, которая гСнСрируСтся для API GigaChat" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "b118ea5561624da68c537baed56e602f", - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"name\": \"change_reminder\",\n", - " \"description\": \"Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΠΎ id.\\nЕсли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти, Ρ‚ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ попроси ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅, Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, указывая ΠΊΠ°ΠΊΠΎΠ΅, Π½ΠΎ Π½Π΅ указывая измСнСния, Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу, ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, указывая ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π·ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ измСнСния напоминаня ΠΏΠΎ id.\\n\\nΠ’Ρ‹Π·Ρ‹Π²Π°ΠΉ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ id ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅.\",\n", - " \"parameters\": {\n", - " \"description\": \"Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΠΎ id.\\nЕсли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти, Ρ‚ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ попроси ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅, Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, указывая ΠΊΠ°ΠΊΠΎΠ΅, Π½ΠΎ Π½Π΅ указывая измСнСния, Ρ‚ΠΎ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, пСрСчисли ΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу, ΡƒΡ‚ΠΎΡ‡Π½ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½Π°Π΄ΠΎ внСсти.\\nЕсли просит ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, указывая ΠΊΠ°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ измСнСния внСсти, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх напоминаниях, Π²Ρ‹Π·Π²Π°Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ id, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ запросу ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π·ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ измСнСния напоминаня ΠΏΠΎ id.\\n\\nΠ’Ρ‹Π·Ρ‹Π²Π°ΠΉ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ id ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅.\",\n", - " \"properties\": {\n", - " \"id\": {\n", - " \"description\": \"id напоминания\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"title\": {\n", - " \"description\": \"Новый тСкст напоминания\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"date_time\": {\n", - " \"description\": \"НовыС врСмя ΠΈ Π΄Π°Ρ‚Π° напоминания Π½Π° русском языкС. ΠŸΠ΅Ρ€Π΅Π΄Π°ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сказал ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π΅ мСняя Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"device_name\": {\n", - " \"description\": \"НовоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ устройства, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅\",\n", - " \"type\": \"string\"\n", - " }\n", - " },\n", - " \"required\": [\n", - " \"id\"\n", - " ],\n", - " \"type\": \"object\"\n", - " },\n", - " \"return_parameters\": {\n", - " \"properties\": {\n", - " \"status\": {\n", - " \"description\": \"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ Π½Π°ΠΉΡ‚ΠΈ список установлСнных Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ\",\n", - " \"enum\": [\n", - " \"success\",\n", - " \"fail\"\n", - " ],\n", - " \"type\": \"string\"\n", - " },\n", - " \"error\": {\n", - " \"description\": \"ВСкст ошибки Π² случаС, Ссли status == fail\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"reminder\": {\n", - " \"description\": \"ΠœΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ напоминания.\",\n", - " \"properties\": {\n", - " \"id\": {\n", - " \"default\": null,\n", - " \"description\": \"Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ напоминания.\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"cron\": {\n", - " \"default\": null,\n", - " \"description\": \"ОписаниС пСриодичности напоминания. Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ΅ описаниС пСрСодичности напоминания. Если ΠΏΠΎΠ»Π΅ отсутствуСт, Ρ‚ΠΎ Ρƒ напоминания Π½Π΅Ρ‚ пСриодичности (Π΅Π΄ΠΈΠ½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ΅).\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"title\": {\n", - " \"default\": null,\n", - " \"description\": \"НазваниС напоминания, ΠΎ Ρ‡Π΅ΠΌ Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ.\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"devices\": {\n", - " \"default\": null,\n", - " \"description\": \"Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ устройств, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ привязаны напоминания\",\n", - " \"items\": {\n", - " \"type\": \"string\"\n", - " },\n", - " \"type\": \"array\"\n", - " },\n", - " \"reminderTime\": {\n", - " \"default\": null,\n", - " \"description\": \"Π”Π°Ρ‚Π° ΠΈ врСмя старта напоминания.\",\n", - " \"type\": \"string\"\n", - " },\n", - " \"createdAt\": {\n", - " \"default\": null,\n", - " \"description\": \"Π”Π°Ρ‚Π° ΠΈ врСмя создания напоминания.\",\n", - " \"type\": \"string\"\n", - " }\n", - " },\n", - " \"type\": \"object\"\n", - " }\n", - " },\n", - " \"required\": [\n", - " \"status\"\n", - " ],\n", - " \"type\": \"object\"\n", - " },\n", - " \"few_shot_examples\": [\n", - " {\n", - " \"request\": \"Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ с id 123 Π½Π° сСгодня Π² 19 30\",\n", - " \"params\": {\n", - " \"id\": \"123\",\n", - " \"date_time\": \"сСгодня Π² 19 30\"\n", - " }\n", - " }\n", - " ]\n", - "}\n" - ] - } - ], - "source": [ - "print(\n", - " json.dumps(\n", - " convert_to_gigachat_function(ChangeReminderTool()), indent=2, ensure_ascii=False\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "938c804e27f84196a10c8828c723f798", - "metadata": { - "collapsed": false - }, - "source": [ - "### Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "504fb2a444614c0babb325280ed9130a", - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "class DeleteReminderInput(BaseModel):\n", - " ids: List[str] = Field(\n", - " description=\"Бписок ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² id Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ\"\n", - " )\n", - "\n", - "\n", - "class DeleteReminderOutput(BaseModel):\n", - " \"\"\"ΠžΡ‚Π²Π΅Ρ‚ Π½Π° delete_reminder\"\"\"\n", - "\n", - " status: Literal[\"success\", \"fail\"] = Field(\n", - " description=\"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅.\"\n", - " )\n", - " error: Optional[str] = Field(\n", - " description=\"ВСкст ошибки Π² случаС, Ссли status == fail\", default=None\n", - " )\n", - "\n", - "\n", - "class DeleteReminderTool(BaseTool):\n", - " name: str = \"delete_reminder\"\n", - " description: str = (\n", - " \"Π£Π΄Π°Π»ΠΈΡ‚ΡŒ напоминания ΠΏΠΎ id. \"\n", - " \"Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π» id напоминания, \"\n", - " \"Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, \"\n", - " \"Π²Ρ‹Π·Π²Π°Π² сначала ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, \"\n", - " \"ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ удалСния напоминания ΠΏΠΎ id.\\n\"\n", - " \"Если Π² контСкстС бСсСды с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρƒ тСбя Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ id, \"\n", - " \"Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ запуском этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅Π±Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ \"\n", - " \"Ρ‚ΠΎΡ‡Π½ΠΎ Π»ΠΈ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС согласия ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ. \"\n", - " \"Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС напоминания \"\n", - " \"ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ id ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ id напоминания,\"\n", - " \" ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π΄ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.\"\n", - " \" Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° \"\n", - " \"ΠΈ готовности ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, сначала пСрСспроси ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ\"\n", - " \" ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ напоминания ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ\"\n", - " \" Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ подтвСрТдСния ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\"\n", - " )\n", - " args_schema: Type[BaseModel] = DeleteReminderInput\n", - " return_schema: Type[BaseModel] = DeleteReminderOutput\n", - " few_shot_examples: FewShotExamples = []\n", - "\n", - " def _run(\n", - " self,\n", - " ids: List[str],\n", - " run_manager: Optional[CallbackManagerForToolRun] = None,\n", - " ) -> DeleteReminderOutput:\n", - " \"\"\"Π›ΠΎΠ³ΠΈΠΊΠ° Ρ‚ΡƒΠ»Π°\"\"\"\n", - " pass" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "59bbdb311c014d738909a11f9e486628", - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"name\": \"delete_reminder\",\n", - " \"description\": \"Π£Π΄Π°Π»ΠΈΡ‚ΡŒ напоминания ΠΏΠΎ id. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π» id напоминания, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, Π²Ρ‹Π·Π²Π°Π² сначала ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ удалСния напоминания ΠΏΠΎ id.\\nЕсли Π² контСкстС бСсСды с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρƒ тСбя Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ id, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ запуском этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅Π±Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ‚ΠΎΡ‡Π½ΠΎ Π»ΠΈ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС согласия ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС напоминания ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ id ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ id напоминания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π΄ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΈ готовности ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, сначала пСрСспроси ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ напоминания ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ подтвСрТдСния ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\",\n", - " \"parameters\": {\n", - " \"description\": \"Π£Π΄Π°Π»ΠΈΡ‚ΡŒ напоминания ΠΏΠΎ id. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π» id напоминания, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ напоминаниях, Π²Ρ‹Π·Π²Π°Π² сначала ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ удалСния напоминания ΠΏΠΎ id.\\nЕсли Π² контСкстС бСсСды с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρƒ тСбя Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ id, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ запуском этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅Π±Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ‚ΠΎΡ‡Π½ΠΎ Π»ΠΈ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС согласия ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просит ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС напоминания ΠΈ Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ id ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ явно ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ id напоминания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π΄ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… id Π² контСкстС Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΈ готовности ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, сначала пСрСспроси ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ напоминания ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ подтвСрТдСния ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.\",\n", - " \"properties\": {\n", - " \"ids\": {\n", - " \"description\": \"Бписок ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² id Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ\",\n", - " \"items\": {\n", - " \"type\": \"string\"\n", - " },\n", - " \"type\": \"array\"\n", - " }\n", - " },\n", - " \"required\": [\n", - " \"ids\"\n", - " ],\n", - " \"type\": \"object\"\n", - " },\n", - " \"return_parameters\": {\n", - " \"description\": \"ΠžΡ‚Π²Π΅Ρ‚ Π½Π° delete_reminder\",\n", - " \"properties\": {\n", - " \"status\": {\n", - " \"description\": \"Бтатус - ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅.\",\n", - " \"enum\": [\n", - " \"success\",\n", - " \"fail\"\n", - " ],\n", - " \"type\": \"string\"\n", - " },\n", - " \"error\": {\n", - " \"default\": null,\n", - " \"description\": \"ВСкст ошибки Π² случаС, Ссли status == fail\",\n", - " \"type\": \"string\"\n", - " }\n", - " },\n", - " \"required\": [\n", - " \"status\"\n", - " ],\n", - " \"type\": \"object\"\n", - " },\n", - " \"few_shot_examples\": null\n", - "}\n" - ] - } - ], - "source": [ - "print(\n", - " json.dumps(\n", - " convert_to_gigachat_function(DeleteReminderTool()), indent=2, ensure_ascii=False\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "b2a9bfb4", - "metadata": {}, - "source": [ - "## Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅\n", - "\n", - "* [Π Π°Π±ΠΎΡ‚Π° с функциями](https://developers.sber.ru/docs/ru/gigachat/api/function-calling)" + "Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚ пСрСнСсСн Π² [основной Ρ€Π°Π·Π΄Π΅Π» с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ](/cookbook/gigachat_functions_agent.ipynb)." ] } ], diff --git a/docs/docs_ru/cookbook/gigachat_qa.ipynb b/docs/docs_ru/cookbook/gigachat_qa.ipynb index 5d24007748e4d..6f97d5680fc88 100644 --- a/docs/docs_ru/cookbook/gigachat_qa.ipynb +++ b/docs/docs_ru/cookbook/gigachat_qa.ipynb @@ -7,620 +7,13 @@ "source": [ "# Retrieval Augmented Generation(RAG) с использованиСм GigaChat Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ \"Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ с ΠΊΠ½ΠΈΠ³ΠΎΠΉ\"\n", "\n", - "ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ RAG позволяСт большим языковым модСлям (LLM) ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠΌΠΏΡ‚.\n", - "НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ модСль ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ тСкст ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ \"ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΈ ΠœΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π°\".\n", - "\n", - "ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ RAG Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² [Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ LangChain](https://python.langchain.com/docs/use_cases/question_answering/) ΠΈ Π² курсС ΠΏΠΎ ΠΏΡ€ΠΎΠΌΠΏΡ‚-ΠΈΠ½ΠΆΠ΅Π½ΠΈΡ€ΠΈΠ½Π³Ρƒ ΠΎΡ‚ Π‘Π±Π΅Ρ€Π° (ссылка Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ·ΠΆΠ΅).\n", - "\n", - "Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ рассмотрим тСкст Ρ€ΠΎΠΌΠ°Π½Π° Π‘ΡƒΠ»Π³Π°ΠΊΠΎΠ²Π° \"ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΈ ΠœΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π°\" (Π³Π»Π°Π²Ρ‹ 1 ΠΈ 2).\n", - "\n", - "Вопрос Π±ΡƒΠ΄Π΅Ρ‚ - `Какой ΠΏΠ»Π°Ρ‰ Π±Ρ‹Π» Ρƒ ΠŸΠΎΠ½Ρ‚ΠΈΡ ΠŸΠΈΠ»Π°Ρ‚Π°?`. ΠžΡ‚Π²Π΅Ρ‚ содСрТится Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΊΠ½ΠΈΠ³ΠΈ:\n", - "`Π’ Π±Π΅Π»ΠΎΠΌ ΠΏΠ»Π°Ρ‰Π΅ с ΠΊΡ€ΠΎΠ²Π°Π²Ρ‹ΠΌ ΠΏΠΎΠ΄Π±ΠΎΠ΅ΠΌ, ΡˆΠ°Ρ€ΠΊΠ°ΡŽΡ‰Π΅ΠΉ кавалСрийской ΠΏΠΎΡ…ΠΎΠ΄ΠΊΠΎΠΉ, Ρ€Π°Π½Π½ΠΈΠΌ ΡƒΡ‚Ρ€ΠΎΠΌ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π½Π°Π΄Ρ†Π°Ρ‚ΠΎΠ³ΠΎ числа вСсСннСго мСсяца нисана Π² ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½Π½Π°Π΄Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΊΡ€Ρ‹Π»ΡŒΡΠΌΠΈ Π΄Π²ΠΎΡ€Ρ†Π° ΠΈΡ€ΠΎΠ΄Π° Π²Π΅Π»ΠΈΠΊΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅Π» ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π˜ΡƒΠ΄Π΅ΠΈ ΠŸΠΎΠ½Ρ‚ΠΈΠΉ ΠŸΠΈΠ»Π°Ρ‚.`" - ] - }, - { - "cell_type": "markdown", - "id": "9ea31150", - "metadata": {}, - "source": [ - "## Установка\n", - "\n", - "Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°ΠΌ понадобится вСкторая Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Chroma." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "a7dc1ec5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[33mWARNING: There was an error checking the latest version of pip.\u001b[0m\u001b[33m\n", - "\u001b[0mNote: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install langchain-chroma --quiet" - ] - }, - { - "cell_type": "markdown", - "id": "5e7543fa", - "metadata": {}, - "source": [ - "## Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ\n", - "Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ модСль GigaChat." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "921afeaa", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_gigachat.chat_models import GigaChat\n", - "\n", - "llm = GigaChat(credentials=\"ΠΊΠ»ΡŽΡ‡_Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ\", verify_ssl_certs=False)" - ] - }, - { - "cell_type": "markdown", - "id": "84443c6f", - "metadata": {}, - "source": [ - "Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ спросим Ρƒ ΠΌΠΎΠ΄Π΅Π»ΠΈ вопрос ΠΏΡ€ΠΎ Ρ†Π²Π΅Ρ‚ ΠΏΠ»Π°Ρ‰Π° Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ контСкста. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½Π° ΠΈ Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚..." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "af0398d5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'ΠŸΠΎΠ½Ρ‚ΠΈΠΉ ΠŸΠΈΠ»Π°Ρ‚, римский ΠΏΡ€ΠΎΠΊΡƒΡ€Π°Ρ‚ΠΎΡ€ Π˜ΡƒΠ΄Π΅ΠΈ, носил ΠΏΠ»Π°Ρ‰, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ назывался \"Ρ‚ΠΎΠ³Π°\". Π’ΠΎΠ³Π° Π±Ρ‹Π»Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΎΠ΄Π΅ΠΆΠ΄ΠΎΠΉ римлян ΠΈ прСдставляла собой Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΡ‚Π½ΠΎ Ρ‚ΠΊΠ°Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ Π²ΠΎΠΊΡ€'" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langchain.schema import HumanMessage\n", - "\n", - "question = \"Какой ΠΏΠ»Π°Ρ‰ Π±Ρ‹Π» Ρƒ ΠŸΠΎΠ½Ρ‚ΠΈΡ ΠŸΠΈΠ»Π°Ρ‚Π°?\"\n", - "llm([HumanMessage(content=question)]).content[0:200]" - ] - }, - { - "cell_type": "markdown", - "id": "4b2e4e31", - "metadata": {}, - "source": [ - "Π’ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ модСль Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½Π°ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, поэтому ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ RAG-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.\n", - "\n", - "## ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°\n", - "\n", - "Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° части. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ `TextLoader` для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ `RecursiveCharacterTextSplitter`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ тСкст Π½Π° ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π²Π½Ρ‹Π΅ куски Π² ~1000 символов с ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ Π² ~200 символов. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ сплиттСра сам Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠΌ способом слСдуСт ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (ΠΏΠΎ Π°Π±Π·Π°Ρ†Π°ΠΌ, ΠΏΠΎ прСдлоТСниям ΠΈ Ρ‚.Π΄.)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "f8cf5765", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total documents: 91\n" - ] - } - ], - "source": [ - "from langchain.document_loaders import TextLoader\n", - "from langchain.text_splitter import (\n", - " RecursiveCharacterTextSplitter,\n", - ")\n", - "\n", - "loader = TextLoader(\"../мастСр_ΠΈ_ΠΌΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π°.txt\")\n", - "documents = loader.load()\n", - "text_splitter = RecursiveCharacterTextSplitter(\n", - " chunk_size=1000,\n", - " chunk_overlap=200,\n", - ")\n", - "documents = text_splitter.split_documents(documents)\n", - "print(f\"Total documents: {len(documents)}\")" - ] - }, - { - "cell_type": "markdown", - "id": "131d5059", - "metadata": {}, - "source": [ - "ПослС Π½Π°Ρ€Π΅Π·ΠΊΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ 91 Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ частями ΠΊΠ½ΠΈΠ³ΠΈ.\n", - "\n", - "## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… эмбСддингов\n", - "\n", - "Π­ΠΌΠ±Π΅Π΄Π΄ΠΈΠ½Π³ это Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ прСдставлСниС тСкста, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано для опрСдСлСния смысловой близости тСкстов. ВСкторная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΡ‚ тСксты ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ эмбСддинги, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск ΠΏΠΎ Π½ΠΈΠΌ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ GigaChatEmbeddings ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Chroma.\n", - "\n", - "> ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ сСрвис для вычислСния эмбСддингов ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ стоимости ΠΌΠΎΠ΄Π΅Π»ΠΈ GigaChat." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "fdce8923", - "metadata": {}, - "outputs": [], - "source": [ - "from chromadb.config import Settings\n", - "from langchain_gigachat.embeddings.gigachat import GigaChatEmbeddings\n", - "from langchain_chroma import Chroma\n", - "\n", - "embeddings = GigaChatEmbeddings(\n", - " credentials=\"ΠΊΠ»ΡŽΡ‡_Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ\", verify_ssl_certs=False\n", - ")\n", - "\n", - "db = Chroma.from_documents(\n", - " documents,\n", - " embeddings,\n", - " client_settings=Settings(anonymized_telemetry=False),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "29137915", - "metadata": {}, - "source": [ - "## Поиск ΠΏΠΎ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…\n", - "\n", - "Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с наибольшСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ содСрТат ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° наш вопрос.\n", - "\n", - "По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 4 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² зависимости ΠΎΡ‚ Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².\n", - "\n", - "Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΆΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ содСрТит Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³ΠΈ с ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ Π½Π° наш вопрос." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "b0c55e98", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "docs = db.similarity_search(question, k=4)\n", - "len(docs)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "32b43339", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "... Π°ΠΊΡ†Π΅Π½Ρ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠΏΠ°Π»: – ВсС просто: Π² Π±Π΅Π»ΠΎΠΌ ΠΏΠ»Π°Ρ‰Π΅...\\n\\n\\n\\nΠ“Π»Π°Π²Π° 2\\n\\nΠŸΠΎΠ½Ρ‚ΠΈΠΉ ΠŸΠΈΠ»Π°Ρ‚\\n\\nΠ’ Π±Π΅Π»ΠΎΠΌ ΠΏΠ»Π°Ρ‰Π΅ с ΠΊΡ€ΠΎΠ²Π°Π²Ρ‹ΠΌ ΠΏΠΎΠ΄Π±ΠΎΠ΅ΠΌ, ΡˆΠ°Ρ€ΠΊΠ°ΡŽΡ‰Π΅ΠΉ кавалСрийской ΠΏΠΎΡ…ΠΎΠ΄ΠΊΠΎΠΉ, Ρ€Π°Π½Π½ΠΈΠΌ ΡƒΡ‚Ρ€ΠΎΠΌ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π½Π°Π΄Ρ† ...\n" - ] - } - ], - "source": [ - "print(f\"... {str(docs[0])[620:800]} ...\")" - ] - }, - { - "cell_type": "markdown", - "id": "96a063c7", - "metadata": {}, - "source": [ - "## QnA Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°\n", - "\n", - "Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ создадим Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ QnA, которая ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° вопросы ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ. Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ пСрСдаСтся языковая модСль ΠΈ Ρ€Π΅Ρ‚Ρ€ΠΈΠ²Π΅Ρ€ (Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…)." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "24671e9a", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain.chains import RetrievalQA\n", - "\n", - "qa_chain = RetrievalQA.from_chain_type(llm, retriever=db.as_retriever())" - ] - }, - { - "cell_type": "markdown", - "id": "592151a2", - "metadata": {}, - "source": [ - "НаконСц ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ вопрос нашСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚!" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "f3b2f453", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/19563044/Documents/Giga/gigachain/venv/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `__call__` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use invoke instead.\n", - " warn_deprecated(\n" - ] - }, - { - "data": { - "text/plain": [ - "{'query': 'Какой ΠΏΠ»Π°Ρ‰ Π±Ρ‹Π» Ρƒ ΠŸΠΎΠ½Ρ‚ΠΈΡ ΠŸΠΈΠ»Π°Ρ‚Π°?',\n", - " 'result': 'Π£ ΠŸΠΎΠ½Ρ‚ΠΈΡ ΠŸΠΈΠ»Π°Ρ‚Π° Π±Ρ‹Π» Π±Π΅Π»Ρ‹ΠΉ ΠΏΠ»Π°Ρ‰ с ΠΊΡ€ΠΎΠ²Π°Π²Ρ‹ΠΌ ΠΏΠΎΠ΄Π±ΠΎΠ΅ΠΌ.'}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qa_chain({\"query\": question})" - ] - }, - { - "cell_type": "markdown", - "id": "ffa10ec4", - "metadata": {}, - "source": [ - "НСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вопросов для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "8f619e09", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'query': 'Какая Ρ‚Ρ€ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Ρƒ Π’ΠΎΠ»Π°Π½Π΄Π°?',\n", - " 'result': 'Π£ Π’ΠΎΠ»Π°Π½Π΄Π° Π±Ρ‹Π»Π° Ρ‚Ρ€ΠΎΡΡ‚ΡŒ с Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ набалдашником Π² Π²ΠΈΠ΄Π΅ Π³ΠΎΠ»ΠΎΠ²Ρ‹ пудСля.'}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qa_chain({\"query\": \"Какая Ρ‚Ρ€ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Ρƒ Π’ΠΎΠ»Π°Π½Π΄Π°?\"})" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "a4a54b82", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'query': 'Ρ‡Ρ‚ΠΎ Π½Π΅ смогли ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π³Π΅Ρ€ΠΎΠΈ Ρ€ΠΎΠΌΠ°Π½Π° Π½Π° ΠŸΠ°Ρ‚Ρ€ΠΈΠ°Ρ€ΡˆΠΈΡ…?',\n", - " 'result': 'Π“Π΅Ρ€ΠΎΠΈ Ρ€ΠΎΠΌΠ°Π½Π° \"ΠœΠ°ΡΡ‚Π΅Ρ€ ΠΈ ΠœΠ°Ρ€Π³Π°Ρ€ΠΈΡ‚Π°\" Π½Π΅ смогли ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Ρ€Π·Π°Π½ Π² Π±ΡƒΠ΄ΠΎΡ‡ΠΊΠ΅ Π½Π° ΠŸΠ°Ρ‚Ρ€ΠΈΠ°Ρ€ΡˆΠΈΡ….'}" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qa_chain({\"query\": \"Ρ‡Ρ‚ΠΎ Π½Π΅ смогли ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π³Π΅Ρ€ΠΎΠΈ Ρ€ΠΎΠΌΠ°Π½Π° Π½Π° ΠŸΠ°Ρ‚Ρ€ΠΈΠ°Ρ€ΡˆΠΈΡ…?\"})" - ] - }, - { - "cell_type": "markdown", - "id": "e4cf02ad", - "metadata": {}, - "source": [ - "# Бонус - Ρ€Π°Π±ΠΎΡ‚Π° с Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€ΠΎΠΉ\n", - "Рассмотрим Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€ΠΎΠΉ. Π’ качСствС ΠΎΠ±Ρ€Π°Π·Ρ†Π° возьмСм ΠΊΠ½ΠΈΠ³Ρƒ \"ДискрСтная ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°\" Π’. Π•. АлСксССва.\n", - "\n", - "Из ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° RAG ΠΊ Π½Π°ΡƒΡ‡Π½Ρ‹ΠΌ ΠΊΠ½ΠΈΠ³Π°ΠΌ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ ΠΈ позволяСт ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы, учитывая знания, написанныС Π² ΠΊΠ½ΠΈΠ³Π΅." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "438e1017", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.2\u001b[0m\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" - ] - } - ], - "source": [ - "!pip install pypdf langchain-chroma --quiet" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "d8581014", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "139\n" - ] - } - ], - "source": [ - "from langchain_community.document_loaders import PyPDFLoader\n", - "\n", - "# Если ссылка Π½Π° ΠΊΠ½ΠΈΠ³Ρƒ пСрСстанСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.\n", - "# Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого Π΄Π΅ΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ссылка Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ сайта ННГУ (http://www.unn.ru/)\n", - "loader = PyPDFLoader(\"http://www.unn.ru/books/met_files/Alekseev.pdf\")\n", - "\n", - "docs = loader.load()\n", - "print(len(docs))" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "269b2921", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " \n", - " \n", - "ΠœΠ˜ΠΠ˜Π‘Π’Π•Π Π‘Π’Π’Πž ΠžΠ‘Π ΠΠ—ΠžΠ’ΠΠΠ˜Π― И НАУКИ \n", - "Π ΠžΠ‘Π‘Π˜Π™Π‘ΠšΠžΠ™ Π€Π•Π”Π•Π ΠΠ¦Π˜Π˜ \n", - " \n", - "НиТСгородский государствСнный ΡƒΠ½ΠΈΠ²Π΅Ρ€\n", - "{'source': 'http://www.unn.ru/books/met_files/Alekseev.pdf', 'page': 0}\n" - ] - } - ], - "source": [ - "print(docs[0].page_content[0:100])\n", - "print(docs[0].metadata)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "5a912c35", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_gigachat.chat_models import GigaChat\n", - "from langchain.schema import HumanMessage\n", - "\n", - "giga = GigaChat(\n", - " credentials=\"ΠΊΠ»ΡŽΡ‡_Π°Π²Ρ‚ΠΎΠΈΡ€Π·Π°Ρ†ΠΈΠΈ\",\n", - " model=\"GigaChat-Pro\",\n", - " verify_ssl_certs=False,\n", - " timeout=1200,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "7b901e8e", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_chroma import Chroma\n", - "from langchain_gigachat.embeddings.gigachat import GigaChatEmbeddings\n", - "from langchain_text_splitters import RecursiveCharacterTextSplitter\n", - "\n", - "embeddings = GigaChatEmbeddings(\n", - " credentials=\"ΠΊΠ»ΡŽΡ‡_Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ\", verify_ssl_certs=False\n", - ")\n", - "\n", - "\n", - "text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)\n", - "splits = text_splitter.split_documents(docs)\n", - "vectorstore = Chroma.from_documents(documents=splits, embedding=embeddings)\n", - "\n", - "retriever = vectorstore.as_retriever()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "1b91b729", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain.chains import create_retrieval_chain\n", - "from langchain.chains.combine_documents import create_stuff_documents_chain\n", - "from langchain_core.prompts import ChatPromptTemplate\n", - "\n", - "system_prompt = (\n", - " \"Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° вопрос ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с использованиСм Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ.\\n\"\n", - " \"ΠžΡ‚Π²Π΅Ρ‡Π°Π°ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 2-3 ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.\\n\"\n", - " \"Π’ΠΎΡ‚ части ΠΊΠ½ΠΈΠ³ΠΈ контСкст для ΠΎΡ‚Π²Π΅Ρ‚Π°:\"\n", - " \"\\n\\n\"\n", - " \"{context}\"\n", - ")\n", - "\n", - "prompt = ChatPromptTemplate.from_messages(\n", - " [\n", - " (\"system\", system_prompt),\n", - " (\"human\", \"{input}\"),\n", - " ]\n", - ")\n", - "\n", - "\n", - "question_answer_chain = create_stuff_documents_chain(giga, prompt)\n", - "rag_chain = create_retrieval_chain(retriever, question_answer_chain)" - ] - }, - { - "attachments": { - "image.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "id": "b7c94605", - "metadata": {}, - "source": [ - "## ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ\n", - "Для сравнСния ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π΄Π²Π°Ρ‚ΡŒ вопрос сначала ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (pure), Π·Π°Ρ‚Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· rag-Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ\n", - "\n", - "![image.png](attachment:image.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "aae231c4", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/19563044/Documents/Giga/gigachain/.venv/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:139: LangChainDeprecationWarning: The method `BaseChatModel.__call__` was deprecated in langchain-core 0.1.7 and will be removed in 0.3.0. Use invoke instead.\n", - " warn_deprecated(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Pure: Π’Π΅ΠΎΡ€Π΅ΠΌΠ° ΠΎΠ± эйлСровом Ρ†ΠΈΠΊΠ»Π΅ гласит, Ρ‡Ρ‚ΠΎ Π² любом Π³Ρ€Π°Ρ„Π΅ Π±Π΅Π· мостов ΠΈ висячих Ρ€Π΅Π±Π΅Ρ€ сумма стСпСнСй всСх Π²Π΅Ρ€ΡˆΠΈΠ½ Ρ€Π°Π²Π½Π° ΡƒΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡƒ числу Ρ€Ρ‘Π±Π΅Ρ€.\n", - "RAG: Π’Π΅ΠΎΡ€Π΅ΠΌΠ° ΠΎΠ± эйлСровом Ρ†ΠΈΠΊΠ»Π΅ гласит, Ρ‡Ρ‚ΠΎ Π² связном Π³Ρ€Π°Ρ„Π΅ эйлСров Ρ†ΠΈΠΊΠ» сущСствуСт Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° стСпСни всСх Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€Π°Ρ„Π° Ρ‡Π΅Ρ‚Π½Ρ‹.\n" - ] - } - ], - "source": [ - "\"\"\" ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»: Π’Π΅ΠΎΡ€Π΅ΠΌΠ° 5.7 (ΠΎΠ± эйлСровом Ρ†ΠΈΠΊΠ»Π΅). Π­ΠΉΠ»Π΅Ρ€ΠΎΠ² Ρ†ΠΈΠΊΠ» Π² связном Π³Ρ€Π°Ρ„Π΅\n", - "сущСствуСт Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° стСпСни всСх Π²Π΅Ρ€ΡˆΠΈΠ½ этого Π³Ρ€Π°Ρ„Π°\n", - "Ρ‡Π΅Ρ‚Π½Ρ‹. \"\"\"\n", - "q = \"О Ρ‡Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ° ΠΎΠ± эйлСровом Ρ†ΠΈΠΊΠ»Π΅?\"\n", - "pure = giga([HumanMessage(content=q)]).content\n", - "print(f\"Pure: {pure}\")\n", - "\n", - "rag = rag_chain.invoke({\"input\": q})[\"answer\"]\n", - "print(f\"RAG: {rag}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "8a69ef6e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Pure: Π“Ρ€Π°Ρ„ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΡƒΠ΄ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ, Ссли ΠΎΠ½ содСрТит Ρ†ΠΈΠΊΠ» Π½Π΅Ρ‡Ρ‘Ρ‚Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄Π½Ρƒ ΠΏΠ°Ρ€Ρƒ нСсмСТных Ρ€Ρ‘Π±Π΅Ρ€.\n", - "\n", - "RAG: Π“Ρ€Π°Ρ„ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΡƒΠ΄ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ, Ссли Π² Π½Π΅ΠΌ содСрТатся Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹.\n" - ] - } - ], - "source": [ - "\"\"\" ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»: ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, присутствиС Π² Π³Ρ€Π°Ρ„Π΅ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² (Ρ‚.Π΅. Ρ†ΠΈΠΊΠ»ΠΎΠ²\n", - "Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹) – СдинствСнная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π³Ρ€Π°Ρ„ Π½Π΅ являСтся\n", - "Π΄Π²ΡƒΠ΄ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ. \"\"\"\n", - "q = \"ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚: По ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π³Ρ€Π°Ρ„ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²ΡƒΠ΄ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ? \"\n", - "pure = giga([HumanMessage(content=q)]).content\n", - "print(f\"Pure: {pure}\\n\")\n", - "\n", - "rag = rag_chain.invoke({\"input\": q})[\"answer\"]\n", - "print(f\"RAG: {rag}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "33658e37", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Pure: Π‘Π»ΠΎΠ²ΠΎ β€” это лСксичСская Π΅Π΄ΠΈΠ½ΠΈΡ†Π° языка, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Набор β€” это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ², явлСний, понятий, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ.\n", - "\n", - "ΠŸΡ€ΠΈΠΌΠ΅Ρ€:\n", - "\n", - "Π‘Π»ΠΎΠ²ΠΎ «стол» β€” это лСксичСская Π΅Π΄ΠΈΠ½ΠΈΡ†Π° русского языка, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π°Ρ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ΠΌΠ΅Π±Π΅Π»ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠ° ΠΏΠΈΡ‰ΠΈ.\n", - "\n", - "Набор столовых ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠ² β€” это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² (Π»ΠΎΠΆΠ΅ΠΊ, Π²ΠΈΠ»ΠΎΠΊ, Π½ΠΎΠΆΠ΅ΠΉ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΎ врСмя Π΅Π΄Ρ‹.\n", - "\n", - "RAG: Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ словом ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ слово - это упорядочСнная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠΊΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ каТдая Π±ΡƒΠΊΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ - это просто ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° ΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ порядка.\n", - "\n", - "ΠŸΡ€ΠΈΠΌΠ΅Ρ€: \"ΠΌΠ°ΠΌΠ°\" - это слово, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ состоит ΠΈΠ· Π±ΡƒΠΊΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ (\"ΠΌ\" ΠΈ \"Π°\"), ΠΈ порядок Π±ΡƒΠΊΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. \"ΠΌΠ°\", \"Π°ΠΌ\", \"Π°ΠΌΠ°\" - это Π΄Ρ€ΡƒΠ³ΠΈΠ΅ слова, Π½ΠΎ \"ΠΌΠ°ΠΌΠ°\" - СдинствСнноС слово ΠΈΠ· этих Ρ‚Ρ€Π΅Ρ….\n", - "\n", - "Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π½Π°Π±ΠΎΡ€ \"ΠΌΠ°ΠΌΠ°\" Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ запись, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ повторСния элСмСнтов ΠΈΠ»ΠΈ ΠΈΡ… порядок.\n" - ] - } - ], - "source": [ - "\"\"\" ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»: Π’Π΅Ρ€ΠΌΠΈΠ½ Π½Π°Π±ΠΎΡ€ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов.\n", - "ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Π° отличаСтся ΠΎΡ‚ понятия мноТСства Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ\n", - "* Π² Π½Π°Π±ΠΎΡ€Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ элСмСнты,\n", - "* порядок располоТСния элСмСнтов Π² Π½Π°Π±ΠΎΡ€Π΅ Π²Π°ΠΆΠ΅Π½ (Π½Π°Π±ΠΎΡ€Ρ‹, состоящиС\n", - "ΠΈΠ· ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… элСмСнтов, располоТСнных Π² Ρ€Π°Π·Π½ΠΎΠΌ порядкС,\n", - "ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ). \"\"\"\n", - "q = \"Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ словом ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠΌ. ΠŸΡ€ΠΈΠ²Π΅Π΄ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.\"\n", - "pure = giga([HumanMessage(content=q)]).content\n", - "print(f\"Pure: {pure}\\n\")\n", - "\n", - "rag = rag_chain.invoke({\"input\": q})[\"answer\"]\n", - "print(f\"RAG: {rag}\")" + "Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚ пСрСнСсСн Π² [основной Ρ€Π°Π·Π΄Π΅Π» с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ](/cookbook/gigachat_qa.ipynb)." ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -634,7 +27,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/docs_ru/cookbook/playlists.ipynb b/docs/docs_ru/cookbook/playlists.ipynb index 40bcb73191e38..0e71d8b86b667 100644 --- a/docs/docs_ru/cookbook/playlists.ipynb +++ b/docs/docs_ru/cookbook/playlists.ipynb @@ -9,170 +9,7 @@ "source": [ "# ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π² Spotify с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat\n", "\n", - "Π­Ρ‚ΠΎΡ‚ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π² Spotify c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GigaChat.\n", - "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Client Id ΠΈ Client Secret Π² Spotify ΠΌΠΎΠΆΠ½ΠΎ [Ρ‚ΡƒΡ‚](https://developer.spotify.com/dashboard)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "AOL5NCErg0Cp", - "pycharm": { - "is_executing": true - } - }, - "outputs": [], - "source": [ - "!pip install spotipy langchain-gigachat" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": true, - "id": "W02mN_okg0Cq", - "pycharm": { - "is_executing": true - } - }, - "outputs": [], - "source": [ - "import json\n", - "import os\n", - "import sys\n", - "\n", - "import spotipy\n", - "from langchain.agents import AgentExecutor, ZeroShotAgent\n", - "from langchain.tools import Tool\n", - "from langchain_gigachat.chat_models import GigaChat\n", - "from spotipy.oauth2 import SpotifyClientCredentials" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "id": "9SABf0t2g0Cq" - }, - "outputs": [], - "source": [ - "os.environ[\"SP_ID\"] = \"\"\n", - "os.environ[\"SP_SECRET\"] = \"\"\n", - "\n", - "llm = GigaChat() # Use big model of GigaChat\n", - "\n", - "spotify = spotipy.Spotify(\n", - " client_credentials_manager=SpotifyClientCredentials(\n", - " client_id=os.getenv(\"SP_ID\"), client_secret=os.getenv(\"SP_SECRET\")\n", - " )\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "RA5Ksuukg0Cr", - "outputId": "edb8e141-111b-4fa7-b960-5aa4d81c05bd" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", - "\u001b[32;1m\u001b[1;3m-----\n", - "Thought: Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ плСйлист с настроСниСм Π³Ρ€ΡƒΡΡ‚ΡŒ ΠΈ ΠΆΠ°Π½Ρ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ подходят для Ρ‚Π°ΠΊΠΎΠ³ΠΎ настроСния\n", - "Action: CREATE_PLAYLIST\n", - "Action Input: {\"happiness\": 0, \"genres\": [\"sad\", \"ballads\", \"love-songs\"]}\n", - "\u001b[0m\n", - "Observation: \u001b[36;1m\u001b[1;3mJohn Murphy β€” In the House - In a Heartbeat\n", - "Lana Del Rey β€” Carmen\n", - "CΓ©line Dion β€” My Heart Will Go On (Love Theme from \"Titanic\")\n", - "Lifehouse β€” Everything\n", - "TouchΓ© AmorΓ© β€” Condolences\n", - "Of Mice & Men β€” My Understandings\n", - "Coldplay β€” Warning Sign\n", - "Sigur RΓ³s β€” Untitled #1 (Vaka)\n", - "Troye Sivan β€” Happy Little Pill\n", - "B.o.B β€” Both of Us (feat. Taylor Swift)\u001b[0m\n", - "\u001b[32;1m\u001b[1;3m\u001b[0m\n", - "\n", - "\u001b[1m> Finished chain.\u001b[0m\n", - "John Murphy β€” In the House - In a Heartbeat\n", - "Lana Del Rey β€” Carmen\n", - "CΓ©line Dion β€” My Heart Will Go On (Love Theme from \"Titanic\")\n", - "Lifehouse β€” Everything\n", - "TouchΓ© AmorΓ© β€” Condolences\n", - "Of Mice & Men β€” My Understandings\n", - "Coldplay β€” Warning Sign\n", - "Sigur RΓ³s β€” Untitled #1 (Vaka)\n", - "Troye Sivan β€” Happy Little Pill\n", - "B.o.B β€” Both of Us (feat. Taylor Swift)\n" - ] - } - ], - "source": [ - "def create_playlist(data):\n", - " \"\"\"Ѐункция получСния Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ\"\"\"\n", - " data = json.loads(data)\n", - " kwargs = {}\n", - " if \"energy\" in data:\n", - " kwargs[\"target_energy\"] = data[\"energy\"] / 100\n", - " if \"happiness\" in data:\n", - " kwargs[\"target_valence\"] = data[\"happiness\"] / 100\n", - " if \"dance\" in data:\n", - " kwargs[\"target_danceability\"] = data[\"dance\"] / 100\n", - " if \"genres\" in data:\n", - " kwargs[\"seed_genres\"] = data[\"genres\"][:5]\n", - " else:\n", - " kwargs[\"seed_genres\"] = [\"pop\", \"hip-hop\", \"rock\", \"r-n-b\"]\n", - "\n", - " results = spotify.recommendations(limit=10, **kwargs)\n", - " tracks = []\n", - " for track in results[\"tracks\"]:\n", - " name = f\"{track['artists'][0]['name']} β€” {track['name']}\"\n", - " os.write(1, f\"{name}\\n\".encode())\n", - " tracks.append(name)\n", - "\n", - " return \"\\n\".join(tracks)\n", - "\n", - "\n", - "tools = [\n", - " Tool.from_function(\n", - " func=create_playlist,\n", - " return_direct=True,\n", - " name=\"CREATE_PLAYLIST\",\n", - " description=\"\"\"ОписаниС: создаСт плСйлисты \\n ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:\n", - " {{\"happiness\": число ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ настроСниС запроса Π³Π΄Π΅ 0 - Π³Ρ€ΡƒΡΡ‚ΡŒ, ΠΏΠ΅Ρ‡Π°Π»ΡŒ, Π°Π³Ρ€Π΅ΡΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ 100 - ΡΡ‡Π°ΡΡ‚ΡŒΠ΅, вСсСльС\n", - " \"energy\": число ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠ½Π΅Ρ€Π³ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ запроса Π³Π΄Π΅ 0 β€” спокойствиС ΠΈ 100 β€” ΡΠ½Π΅Ρ€Π³ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€,\n", - " \"dance\": число ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π°Π½Ρ†Π΅Π²Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π³Π΄Π΅ 0 - спокойствиС ΠΈ 100 β€” Ρ‚Π°Π½Ρ†Π΅Π²Π°Π»ΡŒΠ½Π°Ρ ΠΌΡƒΠ·Ρ‹ΠΊΠ° Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€,\n", - " \"genres\": список ΠΎΡ‚ 1 Π΄ΠΎ 5 элСмСнтов Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΈΠ· этого списка [\"acoustic\", \"afrobeat\", \"alt-rock\", \"alternative\", \"ambient\", \"anime\", \"black-metal\", \"bluegrass\", \"blues\", \"bossanova\", \"brazil\", \"breakbeat\", \"british\", \"cantopop\", \"chicago-house\", \"children\", \"chill\", \"classical\", \"club\", \"comedy\", \"country\", \"dance\", \"dancehall\", \"death-metal\", \"deep-house\", \"detroit-techno\", \"disco\", \"disney\", \"drum-and-bass\", \"dub\", \"dubstep\", \"edm\", \"electro\", \"electronic\", \"emo\", \"folk\", \"forro\", \"french\", \"funk\", \"garage\", \"german\", \"gospel\", \"goth\", \"grindcore\", \"groove\", \"grunge\", \"guitar\", \"happy\", \"hard-rock\", \"hardcore\", \"hardstyle\", \"heavy-metal\", \"hip-hop\", \"holidays\", \"honky-tonk\", \"house\", \"idm\", \"indian\", \"indie\", \"indie-pop\", \"industrial\", \"iranian\", \"j-dance\", \"j-idol\", \"j-pop\", \"j-rock\", \"jazz\", \"k-pop\", \"kids\", \"latin\", \"latino\", \"malay\", \"mandopop\", \"metal\", \"metal-misc\", \"metalcore\", \"minimal-techno\", \"movies\", \"mpb\", \"new-age\", \"new-release\", \"opera\", \"pagode\", \"party\", \"philippines-opm\", \"piano\", \"pop\", \"pop-film\", \"post-dubstep\", \"power-pop\", \"progressive-house\", \"psych-rock\", \"punk\", \"punk-rock\", \"r-n-b\", \"rainy-day\", \"reggae\", \"reggaeton\", \"road-trip\", \"rock\", \"rock-n-roll\", \"rockabilly\", \"romance\", \"sad\", \"salsa\", \"samba\", \"sertanejo\", \"show-tunes\", \"singer-songwriter\", \"ska\", \"sleep\", \"songwriter\", \"soul\", \"soundtracks\", \"spanish\", \"study\", \"summer\", \"swedish\", \"synth-pop\", \"tango\", \"techno\", \"trance\", \"trip-hop\", \"turkish\", \"work-out\", \"world-music\"]}}''\n", - " \"\"\", # noqa: E501,\n", - " ),\n", - "]\n", - "\n", - "agent = ZeroShotAgent.from_llm_and_tools(llm=llm, tools=tools)\n", - "agent_executor = AgentExecutor.from_agent_and_tools(\n", - " agent=agent, tools=tools, verbose=True\n", - ")\n", - "\n", - "stdout = sys.stdout\n", - "\n", - "sys.stdout = stdout\n", - "\n", - "print(\n", - " agent_executor.run(\n", - " \"Π‘ΠΎΠ·Π΄Π°ΠΉ ΠΌΠ½Π΅ грустный плСйлист, ΠΊΠΎΠ³Π΄Π° хочСтся ΡΠ±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΎΡ‚ всСх ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ\"\n", - " )\n", - ")" + "Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚ пСрСнСсСн Π² [основной Ρ€Π°Π·Π΄Π΅Π» с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ](/cookbook/playlists.ipynb)." ] } ], diff --git a/js/README.md b/js/README.md deleted file mode 100644 index 04ed44afc25a1..0000000000000 --- a/js/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с LangChain.js -* [QnA с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ RAG](rag.ipynb) -* [Поиск Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Tavily](tools.ipynb) -* [Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сущностСй ΠΈΠ· тСкста](extraction.ipynb) -* [ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π°Π³Π΅Π½Ρ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ LangGraph.js](langgraph_quickstart.ipynb) \ No newline at end of file diff --git a/static/img/logo-with-backgroung.png b/static/img/logo-with-backgroung.png new file mode 100644 index 0000000000000000000000000000000000000000..e644a944438d6b4294409e3865891dffd9b86b27 GIT binary patch literal 289360 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

(a70$)YtOq-Wj{c!hN@DZ3O| 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 literal 0 HcmV?d00001 diff --git a/static/img/logo.png b/static/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8e091af9e6085558f4fe78c3006430da8f132fea GIT binary patch literal 141541 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%0D4fQl)iNx8NN*qB@*mzO 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 iTy+{CJY>iVBmWNzR$3_=X;pCm0000 Date: Wed, 22 Jan 2025 15:46:54 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=81=D0=BB=D0=BE=D0=BC=D0=B0=D0=BD=D0=BD=D1=83=D1=8E?= =?UTF-8?q?=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a23c21ab61faf..64970334347ea 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ while(True): * `GIGACHAT_API_CORP` β€” доступ для ИП ΠΈ ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π»ΠΈΡ† [ΠΏΠΎ схСмС pay-as-you-go](https://developers.sber.ru/docs/ru/gigachat/api/tariffs#oplata-pay-as-you-go). * `model` β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ [модСль GigaChat](https://developers.sber.ru/docs/ru/gigachat/models). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ запросы ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² модСль GigaChat Lite (`model="GigaChat"`). -* `verify_ssl_certs` β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ [сСртификатов НУЦ ΠœΠΈΠ½Ρ†ΠΈΡ„Ρ€Ρ‹](/https://developers.sber.ru/docs/ru/gigachat/certificates). +* `verify_ssl_certs` β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ [сСртификатов НУЦ ΠœΠΈΠ½Ρ†ΠΈΡ„Ρ€Ρ‹](https://developers.sber.ru/docs/ru/gigachat/certificates). * `streaming` β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ [ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²](https://developers.sber.ru/docs/ru/gigachat/api/response-token-streaming). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ `False`. ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ гСнСрация позволяСт ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ интСрфСйса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ тСкстами. > [!TIP]