Добавить в корзинуПозвонить
Найти в Дзене
SkyNet | Новости ИИ

Создание защищённого рабочего процесса с шифрованием для агентов ИИ с динамическим выбором LLM и интеграцией API

Создание защищённого рабочего процесса с шифрованием для агентов ИИ с динамическим выбором LLM и интеграцией API В этом руководстве мы рассмотрим создание компактного, но функционального рабочего процесса на основе шифрования. Шаг 1: безопасное хранение ключа API Gemini Мы начинаем с безопасного ввода ключа API Gemini с помощью `getpass`, чтобы он оставался скрытым в пользовательском интерфейсе Colab. Затем мы определяем функцию `choose_llm()`, которая проверяет переменные окружения и автоматически выбирает подходящего провайдера LLM, модель и ключ на основе доступных. Шаг 2: определение функции `choose_llm()` ```python def choose_llm(): if os.getenv("OPENAIAPIKEY"): return "openai", "gpt-4o-mini", "OPENAIAPIKEY" if os.getenv("GEMINIAPIKEY"): return "gemini", "gemini-2.5-flash", "GEMINIAPIKEY" if os.getenv("ANTHROPICAPIKEY"): return "anthropic", "claude-3-5-haiku-20241022", "ANTHROPICAPIKEY" raise RuntimeError("Set one API key before running.") ``` Шаг 3: создание вспомогательной

Создание защищённого рабочего процесса с шифрованием для агентов ИИ с динамическим выбором LLM и интеграцией API

В этом руководстве мы рассмотрим создание компактного, но функционального рабочего процесса на основе шифрования.

Шаг 1: безопасное хранение ключа API Gemini

Мы начинаем с безопасного ввода ключа API Gemini с помощью `getpass`, чтобы он оставался скрытым в пользовательском интерфейсе Colab. Затем мы определяем функцию `choose_llm()`, которая проверяет переменные окружения и автоматически выбирает подходящего провайдера LLM, модель и ключ на основе доступных.

Шаг 2: определение функции `choose_llm()`

```python

def choose_llm():

if os.getenv("OPENAIAPIKEY"):

return "openai", "gpt-4o-mini", "OPENAIAPIKEY"

if os.getenv("GEMINIAPIKEY"):

return "gemini", "gemini-2.5-flash", "GEMINIAPIKEY"

if os.getenv("ANTHROPICAPIKEY"):

return "anthropic", "claude-3-5-haiku-20241022", "ANTHROPICAPIKEY"

raise RuntimeError("Set one API key before running.")

```

Шаг 3: создание вспомогательной функции `run()`

Мы создаём вспомогательную функцию `run()`, которая выполняет командные строки, выводит `stdout` и `stderr` для наглядности и выдаёт ошибку, если команда не выполнена, когда `check` включён, делая выполнение рабочего процесса более прозрачным и надёжным.

```python

def run(cmd, check=True, env=None):

print("▸", cmd)

p = subprocess.run(cmd, shell=True, text=True, capture_output=True, env=env)

if p.stdout: print(p.stdout)

if p.stderr: print(p.stderr)

if check and p.returncode != 0:

raise RuntimeError(f"Command failed: {cmd}")

return p

```

Шаг 4: определение функции `ensurenodeand_cipher()`

Мы определяем `ensurenodeand_cipher()`, чтобы установить `Node.js`, `npm` и `Cipher CLI` глобально, обеспечивая наличие всех необходимых зависимостей в нашей среде перед выполнением команд, связанных с `Cipher`.

```python

def ensurenodeand_cipher():

run("sudo apt-get update -y && sudo apt-get install -y nodejs npm", check=False)

run("npm install -g @byterover/cipher")

```

Шаг 5: генерация конфигурации `cipher.yml`

Мы реализуем `writecipheryml()`, чтобы сгенерировать файл конфигурации `cipher.yml` внутри папки `memAgent`, задавая выбранного провайдера LLM, модель и ключ API, включая системный запрос с долговременной памятью и регистрацию файлового сервера `MCP` для файловых операций.

```python

def writecipheryml(workdir, provider, model, key_env):

cfg = """

llm:

provider: {provider}

model: {model}

apiKey: ${key_env}

systemPrompt:

enabled: true

content: |

You are an AI programming assistant with long-term memory of prior decisions.

embedding:

disabled: true

mcpServers:

filesystem:

type: stdio

command: npx

args: ['-y','@modelcontextprotocol/server-filesystem','.']

""".format(provider=provider, model=model, keyenv=keyenv)

(workdir / "memAgent").mkdir(parents=True, exist_ok=True)

(workdir / "memAgent" / "cipher.yml").write_text(cfg.strip() + "n")

```

Шаг 6: запу...

Читать далее