{"meta":{"title":"Использование облачного агента Copilot через API","intro":"Вы можете запускать и управлять Copilot cloud agent задачами программно с помощью REST API.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/copilot","title":"GitHub Copilot"},{"href":"/ru/copilot/how-tos","title":"Инструкции"},{"href":"/ru/copilot/how-tos/use-copilot-agents","title":"Используйте агентов Copilot"},{"href":"/ru/copilot/how-tos/use-copilot-agents/cloud-agent","title":"Cloud agent"},{"href":"/ru/copilot/how-tos/use-copilot-agents/cloud-agent/use-cloud-agent-via-the-api","title":"Используйте облачный агент через API"}],"documentType":"article"},"body":"# Использование облачного агента Copilot через API\n\nВы можете запускать и управлять Copilot cloud agent задачами программно с помощью REST API.\n\nВы можете использовать API задач агента для интеграции cloud agent в свои инструменты и рабочие процессы. Например, вы можете начать новую задачу, перечислить существующие задачи или проверить статус задачи.\n\nКроме того, вы можете использовать API REST и GraphQL для задач, чтобы назначить задачи на Copilot.\n\n## Использование API задач агента\n\n> \\[!NOTE]\n> API задач агента включен Публичный предварительный просмотр и подвержен изменениям.\n\n### Authentication\n\nAPI задач агента поддерживает только токены между пользователями. Вы можете аутентифицироваться с помощью personal access tokenтокена или OAuth appGitHub App токена пользователя-сервера.\n\nТокены сервер-сервер, такие как GitHub App токены доступа установки, не поддерживаются.\n\n### Запуск задачи через API\n\nЧтобы начать новую cloud agent задачу, отправьте `POST` запрос на `/agents/repos/{owner}/{repo}/tasks`. Единственный требуемый параметр — `prompt`, который является запросом для агента.\n\n```shell copy\ncurl -X POST \\\n  -H \"Accept: application/vnd.github+json\" \\\n  -H \"X-GitHub-Api-Version: 2022-11-28\" \\\n  -H \"Authorization: Bearer YOUR-TOKEN\" \\\n  https://api.github.com/agents/repos/OWNER/REPO/tasks \\\n  -d '{\n    \"prompt\": \"Fix the login button on the homepage\",\n    \"base_ref\": \"main\"\n  }'\n```\n\nЗамените следующие значения заполнятелей:\n\n* `YOUR-TOKEN`: A или personal access tokenGitHub App токен пользователя-сервер.\n* `OWNER`: Владелец аккаунта репозитория.\n* `REPO`: Название репозитория.\n\nВы также можете включить следующие опциональные параметры в тело запроса:\n\n* `base_ref`: Базовая ветка для новой ветки и pull request.\n* `model`: Модель ИИ для выполнения задачи. Если опущено, auto model selection используется. Для получения дополнительной информации о поддерживаемых моделях см. [AUTOTITLE.](/ru/rest/agent-tasks/agent-tasks)\n* `create_pull_request`: Булева величина, которая определяет, создавать ли pull request для задачи.\n\n### Задачи по списку\n\nВы можете перечислять задачи для конкретного репозитория или во всех доступных репозиториях.\n\nЧтобы перечислить задачи для конкретного репозитория:\n\n```shell copy\ncurl -H \"Accept: application/vnd.github+json\" \\\n  -H \"X-GitHub-Api-Version: 2022-11-28\" \\\n  -H \"Authorization: Bearer YOUR-TOKEN\" \\\n  https://api.github.com/agents/repos/OWNER/REPO/tasks\n```\n\nЧтобы перечислить ваши задачи во всех репозиториях:\n\n```shell copy\ncurl -H \"Accept: application/vnd.github+json\" \\\n  -H \"X-GitHub-Api-Version: 2022-11-28\" \\\n  -H \"Authorization: Bearer YOUR-TOKEN\" \\\n  https://api.github.com/agents/tasks\n```\n\n### Проверка статуса задачи\n\nЧтобы проверить статус конкретной задачи, отправьте `GET` запрос с идентификатором задачи:\n\n```shell copy\ncurl -H \"Accept: application/vnd.github+json\" \\\n  -H \"X-GitHub-Api-Version: 2022-11-28\" \\\n  -H \"Authorization: Bearer YOUR-TOKEN\" \\\n  https://api.github.com/agents/repos/OWNER/REPO/tasks/TASK-ID\n```\n\nЗамените `TASK-ID` на ID задачи, которую хотите проверить. Этот идентификатор можно получить из ответа, когда создаёте задачу или перечисляете задачи. Ответ включает текущий `state`показатель задачи , который может быть одним из : `queued`, `in_progress`, `completed``failed``idle``waiting_for_user``timed_out`или .`cancelled`\n\n## Использование API issues\n\n> \\[!NOTE]\n> Эта функция уже присутствует Публичный предварительный просмотр и может измениться.\n\nВы можете назначать проблемы либо Copilot на использование GraphQL API, либо REST API. Оба API поддерживают опциональный ввод назначения агента для настройки задачи:\n\n| Параметр GraphQL     | Параметр REST         | Description                                   |\n| -------------------- | --------------------- | --------------------------------------------- |\n| `targetRepositoryId` | `target_repo`         | Репозиторий, где Copilot будет работать       |\n| `baseRef`            | `base_branch`         | Ветвь, от которой Copilot будет разветвляться |\n| `customInstructions` | `custom_instructions` | Дополнительные инструкции для Copilot         |\n| `customAgent`        | `custom_agent`        | A custom agent для выполнения задачи          |\n| `model`              | `model`               | Модель для Copilot использования              |\n\n### Использование API GraphQL\n\n> \\[!NOTE]\n> Вы должны включить `GraphQL-Features` заголовок со значениями `issues_copilot_assignment_api_support` и `coding_agent_model_selection`.\n\nВы можете использовать следующие мутации GraphQL для присвоения проблем :Copilot\n\n* [`updateIssue`](/ru/graphql/reference/issues#mutation-updateissue)\n* [`createIssue`](/ru/graphql/reference/issues#mutation-createissue)\n* [`addAssigneesToAssignable`](/ru/graphql/reference/issues#mutation-addassigneestoassignable)\n* [`replaceActorsForAssignable`](/ru/graphql/reference/issues#mutation-replaceactorsforassignable)\n\n#### Создание и назначение новой проблемы\n\n1. Убедитесь, что вы аутентифицируете API с помощью пользовательского токена, например, personal access token или GitHub App токена пользователя-сервера.\n\n   > \\[!NOTE]\n   > Если используется , fine-grained personal access tokenдля назначения Copilot задачи нужны следующие разрешения:\n   >\n   > * Read access к метаданным\n   > * Read and Write access к действиям, содержимому, проблемам и pull requests\n   >\n   > Если использовать personal access token (classic), ему нужен `repo` прицел для назначения Copilot задачи.\n\n2. Проверьте, что Copilot cloud agent включено в репозитории, проверив, включает ли репозиторий `suggestedActors` в API GraphQL Copilot. Замените `octo-org` владельцем репозитория и `octo-repo` именем репозитория.\n\n   ```graphql copy\n   query {\n     repository(owner: \"octo-org\", name: \"octo-repo\") {\n       suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) {\n         nodes {\n           login\n           __typename\n\n           ... on Bot {\n             id\n           }\n\n           ... on User {\n             id\n           }\n         }\n       }\n     }\n   }\n   ```\n\n   Если Copilot cloud agent включён для пользователя и находится в репозитории, первый узел из запроса будет иметь `login` значение `copilot-swe-agent`.\n\n3. Запишите `id` значение этого имени входа.\n\n4. Получите глобальный идентификатор GraphQL репозитория, в который вы хотите создать проблему, заменив `octo-org` его владельцем и `octo-repo` именем репозитория.\n\n   ```graphql copy\n   query {\n     repository(owner: \"octo-org\", name: \"octo-repo\") {\n       id\n     }\n   }\n   ```\n\n5. Создайте проблему с мутацией `createIssue` . Замените `REPOSITORY_ID` идентификатор, возвращенный на предыдущем шаге, и `BOT_ID` идентификатором, возвращенным из шага до этого. Вы можете добавить `agentAssignment` ввод для настройки задачи.\n\n   ```shell copy\n   gh api graphql -f query='mutation {\n     createIssue(input: {\n       repositoryId: \"REPOSITORY_ID\",\n       title: \"Implement comprehensive unit tests\",\n       body: \"DETAILS\",\n       assigneeIds: [\"BOT_ID\"],\n       agentAssignment: {\n         targetRepositoryId: \"REPOSITORY_ID\",\n         baseRef: \"main\",\n         customInstructions: \"Add comprehensive test coverage\",\n         customAgent: \"\",\n         model: \"\"\n       }\n     }) {\n       issue {\n         id\n         title\n         assignees(first: 10) {\n           nodes {\n             login\n           }\n         }\n       }\n     }\n   }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'\n   ```\n\n#### Назначение существующей проблемы\n\n1. Убедитесь, что вы аутентифицируете API с помощью пользовательского токена, например, personal access token или GitHub App токена пользователя-сервера.\n\n2. Проверьте, что Copilot cloud agent включено в репозитории, проверив, включает ли репозиторий `suggestedActors` в API GraphQL Copilot. Замените `octo-org` владельцем репозитория и `octo-repo` именем репозитория.\n\n   ```graphql copy\n   query {\n     repository(owner: \"monalisa\", name: \"octocat\") {\n       suggestedActors(capabilities: [CAN_BE_ASSIGNED], first: 100) {\n         nodes {\n           login\n           __typename\n\n           ... on Bot {\n             id\n           }\n\n           ... on User {\n             id\n           }\n         }\n       }\n     }\n   }\n   ```\n\n   Если Copilot cloud agent включён для пользователя и находится в репозитории, первый узел из запроса будет иметь `login` значение `copilot-swe-agent`.\n\n3. Получите глобальный идентификатор GraphQL нужного выпуска Copilot, замените `monalisa` его владельцем репозитория, `octocat` именем и `9000` номером выпуска.\n\n   ```graphql copy\n   query {\n     repository(owner: \"monalisa\", name: \"octocat\") {\n       issue(number: 9000) {\n         id\n         title\n       }\n     }\n   }\n   ```\n\n4. Назначите существующую проблему Copilot на использование мутации `replaceActorsForAssignable` . Замените `ISSUE_ID` на ID, вернувшийся с предыдущего шага, `BOT_ID` на ID, возвращённый с предыдущего шага, и `REPOSITORY_ID` на идентификатор репозитория. Вы можете добавить `agentAssignment` ввод для настройки задачи.\n\n   ```shell copy\n   gh api graphql -f query='mutation {\n     replaceActorsForAssignable(input: {\n       assignableId: \"ISSUE_ID\",\n       actorIds: [\"BOT_ID\"],\n       agentAssignment: {\n         targetRepositoryId: \"REPOSITORY_ID\",\n         baseRef: \"main\",\n         customInstructions: \"Fix the reported bug\",\n         customAgent: \"\",\n         model: \"\"\n       }\n     }) {\n       assignable {\n         ... on Issue {\n           id\n           title\n           assignees(first: 10) {\n             nodes {\n               login\n             }\n           }\n         }\n       }\n     }\n   }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'\n   ```\n\n5. Альтернативно, вы можете использовать `updateIssue` мутацию, чтобы обновить существующую проблему и назначить её на Copilot. Замените `ISSUE_ID` на ID проблемы и `BOT_ID` на ID бота.\n\n   ```shell copy\n   gh api graphql -f query='mutation {\n     updateIssue(input: {\n       id: \"ISSUE_ID\",\n       assigneeIds: [\"BOT_ID\"],\n       agentAssignment: {\n         targetRepositoryId: \"REPOSITORY_ID\",\n         baseRef: \"main\",\n         customInstructions: \"Update feature implementation\",\n         customAgent: \"\",\n         model: \"\"\n       }\n     }) {\n       issue {\n         id\n         title\n         assignees(first: 10) {\n           nodes {\n             login\n           }\n         }\n       }\n     }\n   }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'\n   ```\n\n6. Вы также можете использовать `addAssigneesToAssignable` мутацию, чтобы добавить Copilot к существующей проблеме, сохраняя при этом других назначенных. Замените `ISSUE_ID` на ID проблемы и `BOT_ID` на ID бота.\n\n   ```shell copy\n   gh api graphql -f query='mutation {\n     addAssigneesToAssignable(input: {\n       assignableId: \"ISSUE_ID\",\n       assigneeIds: [\"BOT_ID\"],\n       agentAssignment: {\n         targetRepositoryId: \"REPOSITORY_ID\",\n         baseRef: \"main\",\n         customInstructions: \"Collaborate on this task\",\n         customAgent: \"\",\n         model: \"\"\n       }\n     }) {\n       assignable {\n         ... on Issue {\n           id\n           title\n           assignees(first: 10) {\n             nodes {\n               login\n             }\n           }\n         }\n       }\n     }\n   }' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'\n   ```\n\n### Использование REST API\n\nВы можете использовать следующие конечные точки REST API для назначения задач на:Copilot\n\n* [Добавьте правоназначенцев к проблеме](/ru/rest/issues/assignees#add-assignees-to-an-issue)\n* [Создайте проблему](/ru/rest/issues/issues#create-an-issue)\n* [Обновить выпуск](/ru/rest/issues/issues#update-an-issue)\n\n#### Добавление правопредоставлений к существующему выпуску\n\n```shell copy\ngh api \\\n  --method POST \\\n  -H \"Accept: application/vnd.github+json\" \\\n  -H \"X-GitHub-Api-Version: 2022-11-28\" \\\n  /repos/OWNER/REPO/issues/ISSUE_NUMBER/assignees \\\n  --input - <<< '{\n  \"assignees\": [\"copilot-swe-agent[bot]\"],\n  \"agent_assignment\": {\n    \"target_repo\": \"OWNER/REPO\",\n    \"base_branch\": \"main\",\n    \"custom_instructions\": \"\",\n    \"custom_agent\": \"\",\n    \"model\": \"\"\n  }\n}'\n```\n\n#### Создание новой проблемы\n\n```shell copy\ngh api \\\n  --method POST \\\n  -H \"Accept: application/vnd.github+json\" \\\n  -H \"X-GitHub-Api-Version: 2022-11-28\" \\\n  /repos/OWNER/REPO/issues \\\n  --input - <<< '{\n  \"title\": \"Issue title\",\n  \"body\": \"Issue description.\",\n  \"assignees\": [\"copilot-swe-agent[bot]\"],\n  \"agent_assignment\": {\n    \"target_repo\": \"OWNER/REPO\",\n    \"base_branch\": \"main\",\n    \"custom_instructions\": \"\",\n    \"custom_agent\": \"\",\n    \"model\": \"\"\n  }\n}'\n```\n\n#### Обновление существующей проблемы\n\n```shell copy\ngh api \\\n  --method PATCH \\\n  -H \"Accept: application/vnd.github+json\" \\\n  -H \"X-GitHub-Api-Version: 2022-11-28\" \\\n  /repos/OWNER/REPO/issues/ISSUE_NUMBER \\\n  --input - <<< '{\n  \"assignees\": [\"copilot-swe-agent[bot]\"],\n  \"agent_assignment\": {\n    \"target_repo\": \"OWNER/REPO\",\n    \"base_branch\": \"main\",\n    \"custom_instructions\": \"\",\n    \"custom_agent\": \"\",\n    \"model\": \"\"\n  }\n}'\n```\n\n## Дополнительные материалы\n\n* [Конечные точки REST API для задач агентов](/ru/rest/agent-tasks/agent-tasks)\n* [О облачном агенте GitHub Copilot](/ru/copilot/concepts/agents/cloud-agent/about-cloud-agent)\n* [Начало сессий GitHub Copilot](/ru/copilot/how-tos/use-copilot-agents/cloud-agent/start-copilot-sessions)"}