Возможность создания индивидуальных инструментов имеет решающее значение для разработки настраиваемых AI-агентов. В этом руководстве мы покажем, как создать мощный и интеллектуальный инструмент для анализа данных на Python, который можно интегрировать в AI-агентов на базе LangChain.
Установка необходимых пакетов
Для начала установим необходимые пакеты Python для анализа данных, визуализации, машинного обучения и разработки инструментов LangChain:
`!pip install langchain langchain-core pandas numpy matplotlib seaborn scikit-learn`
Затем импортируем ключевые библиотеки, включая pandas, numpy, scikit-learn и langchain_core, чтобы настроить среду для создания индивидуального интеллектуального инструмента для AI-агентов. Эти библиотеки обеспечивают основу для предварительной обработки, кластеризации, оценки и интеграции инструментов.
Определение схемы ввода данных
`class DataAnalysisInput(BaseModel):`
` data: List[Dict[str, Any]] = Field(description=”Список записей данных в виде словарей”)`
` analysis_type: str = Field(default=”comprehensive”, description=”Тип анализа: ‘comprehensive’, ‘clustering’, ‘correlation’, ‘outlier'”)`
` target_column: Optional[str] = Field(default=None, description=”Целевой столбец для целенаправленного анализа”)`
` max_clusters: int = Field(default=5, description=”Максимальное количество кластеров для кластерного анализа”)`
Выше мы определяем схему ввода для пользовательского инструмента анализа данных с помощью Pydantic’s BaseModel. Класс DataAnalysisInput гарантирует, что входящие данные соответствуют структурированному формату, позволяя пользователям указывать набор данных, тип анализа, необязательный целевой столбец и максимальное количество кластеров для кластерного анализа.
Класс IntelligentDataAnalyzer
`class IntelligentDataAnalyzer(BaseTool):`
` name: str = “intelligentdataanalyzer”`
` description: str = “Продвинутый инструмент для анализа данных, который выполняет статистический анализ, кластеризацию на основе машинного обучения, обнаружение выбросов, корреляционный анализ и генерирует визуализации с действенными выводами.”`
` args_schema: type[BaseModel] = DataAnalysisInput`
` responseformat: str = “contentand_artifact”`
` def run(self, data: List[Dict], analysistype: str = “comprehensive”, targetcolumn: Optional[str] = None, maxclusters: int = 5) -> Tuple[str, Dict]:`
` try:`
` df = pd.DataFrame(data)`
` if df.empty:`
` raise ToolException(“Набор данных пуст”)`
` insights = {“datasetinfo”: self.getdatasetinfo(df)}`
` if analysis_type in [“comprehensive”, “correlation”]:`
` insights[“correlationanalysis”] = self.correlation_analysis(df)`
` if analysis_type in [“comprehensive”, “clustering”]:`
` insights[“clusteringanalysis”] = self.clusteringanalysis(df, maxclusters)`
` if analysis_type in [“comprehensive”, “outlier”]:`
` insights[“outlierdetection”] = self.outlier_detection(df)`
` if targetcolumn and targetcolumn in df.columns:`
` insights[“targetanalysis”] = self.targetanalysis(df, targetcolumn)`
` recommendations = self.generaterecommendations(df, insights)`
` summary = self.createanalysis_summary(insights, recommendations)`
` artifact = {`
` “insights”: insights,`
` “recommendations”: recommendations,`
` “data_shape”: df.shape,`
` “analysistype”: analysistype,`
` “numericcolumns”: df.selectdtypes(include=[np.number]).columns.tolist(),`
` “categoricalcolumns”: df.selectdtypes(include=[‘object’]).columns.tolist()`
` }`
` return summary, artifact`
` except Exception as e:`
` raise ToolException(f”Анализ не выполнен: {str(e)}”)`
Класс IntelligentDataAnalyzer — это индивидуальный инструмент, созданный с использованием LangChain’s BaseTool, предназначенный для комплексного анализа данных в структурированных наборах данных. Он объединяет несколько аналитических методов, включая генерацию корреляционных матриц, кластеризацию K-Means с оценкой силуэта, обнаружение выбросов с использованием IQR и z-оценки, а также описательную статистику по целевому столбцу, в единый конвейер.
Использование инструмента
`data_analyzer = IntelligentDataAnalyzer()`
`sample_data = [`
` {“age”: 25, “income”: 50000, “education”: “Bachelor”, “satisfaction”: 7},`
` {“age”: 35, “income”: 75000, “education”: “Master”, “satisfaction”: 8},`
` {“age”: 45, “income”: 90000, “education”: “PhD”, “satisfaction”: 6},`
` {“age”: 28, “income”: 45000, “education”: “Bachelor”, “satisfaction”: 7},`
` {“age”: 52, “income”: 120000, “education”: “Master”, “satisfaction”: 9},`
`]`
`result = data_analyzer.invoke({`
` “data”: sample_data,`
` “analysis_type”: “comprehensive”,`
` “target_column”: “satisfaction”`
`})`
`print(“Анализ Summary:”)`
`print(result)`
Наконец, мы инициализируем инструмент IntelligentDataAnalyzer и передаём ему образец набора данных, включающего демографические данные и данные об удовлетворённости. Установив тип анализа как «comprehensive» и указав «satisfaction» в качестве целевого столбца, инструмент выполняет полный комплекс анализов, включая статистическое профилирование, проверку корреляции, кластеризацию, обнаружение выбросов и анализ распределения целей.
В заключение мы создали продвинутый индивидуальный инструмент для интеграции с AI-агентом. Класс IntelligentDataAnalyzer выполняет широкий спектр аналитических задач, от статистического профилирования до кластеризации на основе машинного обучения, и представляет результаты в структурированном виде с чёткими рекомендациями. Этот подход подчёркивает, как индивидуальные инструменты LangChain могут сократить разрыв между наукой о данных и интерактивным искусственным интеллектом, делая агентов более осведомлёнными о контексте и способными принимать обоснованные решения на основе данных.
1. Какие библиотеки Python используются для создания индивидуального интеллектуального инструмента для AI-агентов на базе LangChain?
В статье упоминаются следующие библиотеки Python: pandas, numpy, matplotlib, seaborn, scikit-learn, langchain_core.
2. Какие типы анализа данных предусмотрены в классе IntelligentDataAnalyzer?
В классе IntelligentDataAnalyzer предусмотрены следующие типы анализа данных:
* комплексный анализ (comprehensive);
* кластерный анализ (clustering);
* корреляционный анализ (correlation);
* обнаружение выбросов (outlier).
3. Какие методы анализа данных включены в класс IntelligentDataAnalyzer?
Класс IntelligentDataAnalyzer включает в себя следующие методы анализа данных:
* генерация корреляционных матриц;
* кластеризация K-Means с оценкой силуэта;
* обнаружение выбросов с использованием IQR и z-оценки;
* описательная статистика по целевому столбцу.
4. Какие параметры можно настроить при использовании класса IntelligentDataAnalyzer?
При использовании класса IntelligentDataAnalyzer можно настроить следующие параметры:
* тип анализа данных (analysis_type);
* целевой столбец для целенаправленного анализа (target_column);
* максимальное количество кластеров для кластерного анализа (max_clusters).
5. Как можно использовать класс IntelligentDataAnalyzer для анализа данных?
Для анализа данных с помощью класса IntelligentDataAnalyzer необходимо:
1. Инициализировать инструмент IntelligentDataAnalyzer.
2. Передать ему образец набора данных.
3. Указать тип анализа данных и целевой столбец.
4. Получить результаты анализа в структурированном виде с чёткими рекомендациями.