В этом руководстве мы создадим продвинутого ИИ-агента с использованием Semantic Kernel в сочетании с бесплатной моделью Google Gemini и запустим его в Google Colab.
Шаги реализации
1. Настройка инструментов Semantic Kernel: подключаем плагины Semantic Kernel в виде инструментов, таких как веб-поиск, математическая оценка, ввод-вывод файлов и создание заметок.
2. Использование Gemini: позволяем Gemini координировать инструменты через структурированные выходные данные в формате JSON.
Код
“`python
import os, re, json, time, math, textwrap, getpass, pathlib, typing as T
from rich import print
import google.generativeai as genai
from duckduckgo_search import DDGS
GEMINIAPIKEY = os.getenv(“GEMINIAPIKEY”) or getpass.getpass(“Enter GEMINIAPIKEY: “)
genai.configure(apikey=GEMINIAPI_KEY)
GEMINI_MODEL = “gemini-1.5-flash”
model = genai.GenerativeModel(GEMINI_MODEL)
import semantic_kernel as sk
try:
from semantickernel.functions import kernelfunction
except Exception:
from semantickernel.utils.functiondecorator import kernel_function
class AgentTools:
“””Semantic Kernel-native toolset the agent can call.”””
def init(self):
self._notes: list[str] = []
@kernelfunction(name=”websearch”, description=”Search the web for fresh info; returns JSON list of {title,href,body}.”)
def web_search(self, query: str, k: int = 5) -> str:
k = max(1, min(int(k), 10))
hits = list(DDGS().text(query, max_results=k))
return json.dumps(hits[:k], ensure_ascii=False)
# … (другие методы)
kernel = sk.Kernel()
tools = AgentTools()
kernel.addplugin(tools, “agenttools”)
“`
Демонстрация
Мы определяем класс `AgentTools` как набор инструментов Semantic Kernel, предоставляя агенту такие возможности, как веб-поиск, безопасные математические вычисления, получение текущего времени, чтение и запись файлов, а также хранение заметок. Затем мы инициализируем Semantic Kernel и регистрируем эти инструменты в виде плагина, чтобы агент мог вызывать их во время рассуждений.
Заключение
Наблюдаем, как Semantic Kernel и Gemini сотрудничают, формируя компактную, но мощную агентскую систему в Colab. Мы не только тестируем вызовы инструментов, но и видим, как результаты возвращаются в цикл рассуждений для получения чистого окончательного ответа. Теперь у нас есть готовый шаблон для расширения с помощью дополнительных инструментов или задач, и мы доказываем, что создание практичного продвинутого ИИ-агента может быть простым и эффективным при правильном сочетании фреймворков.
1. Какие инструменты Semantic Kernel используются в данном проекте и как они подключаются?
Ответ: в проекте используются такие инструменты Semantic Kernel, как веб-поиск, математическая оценка, ввод-вывод файлов и создание заметок. Они подключаются через плагины в виде инструментов.
2. Какая модель Google Gemini применяется в данном проекте и как она настраивается?
Ответ: в проекте применяется модель Google Gemini с названием «gemini-1.5-flash». Она настраивается с помощью API-ключа, который можно получить через переменную окружения `GEMINIAPIKEY` или ввести вручную.
3. Какие методы класса `AgentTools` определены для работы с инструментами Semantic Kernel?
Ответ: для работы с инструментами Semantic Kernel в классе `AgentTools` определены следующие методы: `websearch` для поиска в интернете, а также другие методы, которые не были показаны в примере кода. Метод `websearch` позволяет выполнять запросы к поисковику DuckDuckGo и возвращать результаты в формате JSON.
4. Как инициализируется Semantic Kernel и регистрируются инструменты в виде плагина?
Ответ: Semantic Kernel инициализируется с помощью переменной `kernel = sk.Kernel()`, а инструменты регистрируются в виде плагина с помощью метода `kernel.addplugin(tools, “agenttools”)`.
5. Какие возможности предоставляет класс `AgentTools` агенту?
Ответ: класс `AgentTools` предоставляет агенту такие возможности, как веб-поиск, безопасные математические вычисления, получение текущего времени, чтение и запись файлов, а также хранение заметок.