{"id":14019,"date":"2026-06-24T15:08:00","date_gmt":"2026-06-24T12:08:00","guid":{"rendered":"https:\/\/www.almtoolbox.com\/blog_he\/?p=14019"},"modified":"2026-07-16T15:44:41","modified_gmt":"2026-07-16T12:44:41","slug":"how-to-integrate-litellm-with-git-github-gitlab-workflows","status":"publish","type":"post","link":"https:\/\/www.almtoolbox.com\/blog_he\/how-to-integrate-litellm-with-git-github-gitlab-workflows\/","title":{"rendered":"\u05db\u05d9\u05e6\u05d3 \u05dc\u05e9\u05dc\u05d1 \u05d0\u05ea LiteLLM \u05e2\u05dd \u05ea\u05d4\u05dc\u05d9\u05db\u05d9 \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 \u05e9\u05dc git, GitHub \u05d5-GitLab?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>LiteLLM <\/em>\u05d4\u05d5\u05d0 \u05d3\u05e8\u05da \u05de\u05e2\u05e9\u05d9\u05ea \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d9\u05db\u05d5\u05dc\u05d5\u05ea \u05d1\u05d9\u05e0\u05d4 \u05de\u05dc\u05d0\u05db\u05d5\u05ea\u05d9\u05ea (AI) \u05dc\u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 \u05de\u05d1\u05d5\u05e1\u05e1\u05ea Git \u05de\u05d1\u05dc\u05d9 \u05dc\u05d4\u05d9\u05e0\u05e2\u05dc \u05e2\u05dc \u05e1\u05e4\u05e7 \u05de\u05d5\u05d3\u05dc \u05d9\u05d7\u05d9\u05d3. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u05e2\u05d1\u05d5\u05e8 \u05e6\u05d5\u05d5\u05ea\u05d9\u05dd \u05d4\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05d1-GitHub \u05d0\u05d5 \u05d1-GitLab, \u05d4\u05d5\u05d0 \u05d9\u05db\u05d5\u05dc \u05dc\u05e9\u05de\u05e9 \u05db\u05d2\u05e9\u05e8 (gateway) \u05d1\u05d9\u05e0\u05d4 \u05de\u05dc\u05d0\u05db\u05d5\u05ea\u05d9\u05ea \u05de\u05d0\u05d5\u05d7\u05d3 \u05d1\u05d0\u05de\u05e6\u05e2 \u05dc\u05e6\u05d5\u05e8\u05da \u05e1\u05e7\u05d9\u05e8\u05ea \u05e7\u05d5\u05d3, \u05e1\u05d9\u05d5\u05e2 \u05d1-commit, \u05e0\u05d9\u05ea\u05d5\u05d7 \u05d1\u05e7\u05e9\u05d5\u05ea \u05de\u05d9\u05d6\u05d5\u05d2 (merge requests) \u05d5\u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d5\u05ea CI. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u05d6\u05d4 \u05d4\u05d5\u05e4\u05da \u05d0\u05d5\u05ea\u05d5 \u05dc\u05e9\u05d9\u05de\u05d5\u05e9\u05d9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3 \u05db\u05d0\u05e9\u05e8 \u05e8\u05d5\u05e6\u05d9\u05dd \u05d2\u05de\u05d9\u05e9\u05d5\u05ea \u05d1\u05d9\u05df \u05e1\u05e4\u05e7\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd, \u05de\u05e9\u05d9\u05dc\u05d5\u05ea (governance) \u05e8\u05d9\u05db\u05d5\u05d6\u05d9\u05ea \u05d5-API \u05e2\u05e7\u05d1\u05d9 \u05e2\u05d1\u05d5\u05e8 \u05ea\u05d4\u05dc\u05d9\u05db\u05d9 \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 (pipelines) \u05e9\u05dc\u05db\u05dd.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2026\/06\/litellm-illus.webp\"><img decoding=\"async\" src=\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2026\/06\/litellm-illus-1024x559.webp\" alt=\"litellm git github gitlab\" class=\"wp-image-9424\"\/><\/a><\/figure>\n\n\n\n<div style=\"height:38px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u05de\u05d3\u05d5\u05e2 LiteLLM \u05de\u05ea\u05d0\u05d9\u05dd \u05dc\u05ea\u05d4\u05dc\u05d9\u05db\u05d9 \u05e2\u05d1\u05d5\u05d3\u05d4 \u05e9\u05dc Git<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u05d1\u05e1\u05d1\u05d9\u05d1\u05d5\u05ea \u05de\u05d1\u05d5\u05e1\u05e1\u05d5\u05ea git, \u05d0\u05d5\u05ea\u05d4 \u05d9\u05db\u05d5\u05dc\u05ea \u05d1\u05d9\u05e0\u05d4 \u05de\u05dc\u05d0\u05db\u05d5\u05ea\u05d9\u05ea \u05e0\u05d3\u05e8\u05e9\u05ea \u05dc\u05e2\u05d9\u05ea\u05d9\u05dd \u05e7\u05e8\u05d5\u05d1\u05d5\u05ea \u05dc\u05e2\u05d1\u05d5\u05d3 \u05d1\u05e9\u05dc\u05d1\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd: \u05e9\u05dc\u05d1 \u05d4-commit, \u05e1\u05e7\u05d9\u05e8\u05ea pull request \u05d0\u05d5 merge request, \u05d4\u05db\u05e0\u05ea \u05d2\u05e8\u05e1\u05d4 (release) \u05d5\u05d1\u05d3\u05d9\u05e7\u05d5\u05ea CI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">LiteLLM \u05e2\u05d5\u05d6\u05e8 \u05d1\u05db\u05da \u05e9\u05d4\u05d5\u05d0 \u05de\u05e1\u05e4\u05e7 \u05e0\u05e7\u05d5\u05d3\u05ea \u05e7\u05e6\u05d4 (endpoint) \u05d0\u05d7\u05ea <em><strong>\u05ea\u05d5\u05d0\u05de\u05ea OpenAI (OpenAI-compatible)<\/strong><\/em> \u05e9\u05d9\u05db\u05d5\u05dc\u05d4 \u05dc\u05e0\u05ea\u05d1 \u05d1\u05e7\u05e9\u05d5\u05ea \u05dc\u05e1\u05e4\u05e7\u05d9 \u05de\u05d5\u05d3\u05dc\u05d9\u05dd \u05e8\u05d1\u05d9\u05dd \u05de\u05d0\u05d7\u05d5\u05e8\u05d9 \u05d4\u05e7\u05dc\u05e2\u05d9\u05dd. \u05d4\u05de\u05e9\u05de\u05e2\u05d5\u05ea \u05d4\u05d9\u05d0 \u05e9\u05d4\u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 \u05e9\u05dc\u05db\u05dd \u05d9\u05db\u05d5\u05dc\u05d4 \u05dc\u05d4\u05d9\u05e9\u05d0\u05e8 \u05d9\u05e6\u05d9\u05d1\u05d4 \u05d2\u05dd \u05d0\u05dd \u05ea\u05d7\u05dc\u05d9\u05e4\u05d5 \u05de\u05d5\u05d3\u05dc\u05d9\u05dd, \u05ea\u05d5\u05e1\u05d9\u05e4\u05d5 \u05d2\u05d9\u05d1\u05d5\u05d9\u05d9\u05dd (fallbacks) \u05d0\u05d5 \u05ea\u05e2\u05d1\u05d9\u05e8\u05d5 \u05d7\u05dc\u05e7 \u05de\u05e2\u05d5\u05de\u05e1\u05d9 \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 \u05dc\u05d0\u05d9\u05e8\u05d5\u05d7 \u05e2\u05e6\u05de\u05d9 (self-hosted).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u05e2\u05d1\u05d5\u05e8 \u05e6\u05d5\u05d5\u05ea\u05d9 DevOps \u05d5-DevSecOps, \u05d6\u05d4\u05d5 \u05d3\u05e4\u05d5\u05e1 \u05e4\u05e2\u05d5\u05dc\u05d4 \u05d7\u05d6\u05e7 \u05de\u05db\u05d9\u05d5\u05d5\u05df \u05e9\u05d4\u05d5\u05d0 \u05e9\u05d5\u05de\u05e8 \u05e2\u05dc \u05e9\u05d9\u05de\u05d5\u05e9 \u05e8\u05d9\u05db\u05d5\u05d6\u05d9 \u05d1-AI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d1\u05e7\u05e8\u05ea \u05de\u05d3\u05d9\u05e0\u05d9\u05d5\u05ea, \u05e8\u05d9\u05e9\u05d5\u05dd \u05d9\u05d5\u05de\u05e0\u05d9\u05dd (logging), \u05e8\u05e9\u05d9\u05de\u05d5\u05ea \u05de\u05d5\u05d3\u05dc\u05d9\u05dd \u05de\u05d0\u05d5\u05e9\u05e8\u05d9\u05dd (allowlists) \u05d5\u05de\u05e2\u05e7\u05d1 \u05e2\u05dc\u05d5\u05d9\u05d5\u05ea \u05d1\u05e9\u05db\u05d1\u05ea \u05d4\u05e4\u05e8\u05d5\u05e7\u05e1\u05d9 (proxy layer), \u05d1\u05de\u05e7\u05d5\u05dd \u05dc\u05e4\u05d6\u05e8 \u05d0\u05ea \u05d4\u05e0\u05d5\u05e9\u05d0\u05d9\u05dd \u05d4\u05dc\u05dc\u05d5 \u05e2\u05dc \u05e4\u05e0\u05d9 \u05e1\u05e7\u05e8\u05d9\u05e4\u05d8\u05d9\u05dd \u05d5\u05de\u05d0\u05d2\u05e8\u05d9\u05dd (repositories) \u05e8\u05d1\u05d9\u05dd.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u05d1\u05e4\u05d5\u05e2\u05dc, \u05d6\u05d4 \u05d4\u05d5\u05e4\u05da \u05d0\u05ea \u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05d4-AI \u05dc\u05e7\u05dc\u05d5\u05ea \u05d9\u05d5\u05ea\u05e8 \u05dc\u05e1\u05d8\u05e0\u05d3\u05e8\u05d8\u05d9\u05d6\u05e6\u05d9\u05d4 \u05d1\u05e8\u05d7\u05d1\u05d9 \u05e1\u05d1\u05d9\u05d1\u05d5\u05ea \u05d4-GitHub \u05d5\u05d4-GitLab \u05e9\u05dc\u05db\u05dd.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u05de\u05e7\u05e8\u05d9 \u05e9\u05d9\u05de\u05d5\u05e9 \u05e0\u05e4\u05d5\u05e6\u05d9\u05dd<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u05dc\u05d4\u05dc\u05df \u05d3\u05e8\u05db\u05d9\u05dd \u05de\u05e2\u05e9\u05d9\u05d5\u05ea \u05dc\u05e9\u05d9\u05de\u05d5\u05e9 \u05d1-LiteLLM \u05d1\u05ea\u05d4\u05dc\u05d9\u05db\u05d9 \u05e2\u05d1\u05d5\u05d3\u05d4 \u05de\u05d1\u05d5\u05e1\u05e1\u05d9 git:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u05e1\u05e7\u05d9\u05e8\u05ea pull request \u05d0\u05d5 merge request.<\/li>\n\n\n\n<li>\u05d9\u05e6\u05d9\u05e8\u05ea \u05d4\u05d5\u05d3\u05e2\u05d5\u05ea commit.<\/li>\n\n\n\n<li>\u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05d0\u05d1\u05d8\u05d7\u05d4 \u05d5\u05ea\u05d0\u05d9\u05de\u05d5\u05ea (compliance).<\/li>\n\n\n\n<li>\u05d8\u05d9\u05d5\u05d8\u05d5\u05ea \u05dc\u05d4\u05e2\u05e8\u05d5\u05ea \u05e9\u05d7\u05e8\u05d5\u05e8 (release notes).<\/li>\n\n\n\n<li>\u05e1\u05d9\u05d5\u05e2 \u05d1\u05db\u05ea\u05d9\u05d1\u05ea \u05ea\u05d9\u05e2\u05d5\u05d3.<\/li>\n\n\n\n<li>\u05d4\u05e2\u05e9\u05e8\u05ea \u05ea\u05d4\u05dc\u05d9\u05db\u05d9 CI (CI pipelines).<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\u05d3\u05d5\u05d2\u05de\u05d4 \u05e2\u05d1\u05d5\u05e8 GitHub Actions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u05d3\u05d5\u05d2\u05de\u05d4 \u05d6\u05d5 \u05de\u05e6\u05d9\u05d2\u05d4 \u05d3\u05e4\u05d5\u05e1 \u05e4\u05e9\u05d5\u05d8 \u05e9\u05d1\u05d5 GitHub Actions \u05e7\u05d5\u05e8\u05d0 \u05dc\u05e4\u05e8\u05d5\u05e7\u05e1\u05d9 \u05e9\u05dc LiteLLM \u05d1\u05de\u05d4\u05dc\u05da \u05ea\u05d4\u05dc\u05d9\u05da \u05e2\u05d1\u05d5\u05d3\u05d4 \u05e9\u05dc pull request. \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05ea\u05d0\u05d9\u05dd \u05d0\u05ea \u05d4\u05d4\u05e0\u05d7\u05d9\u05d4 (prompt) \u05db\u05d3\u05d9 \u05dc\u05d9\u05e6\u05d5\u05e8 \u05e1\u05d9\u05db\u05d5\u05dd \u05e1\u05e7\u05d9\u05e8\u05d4, \u05d8\u05d9\u05d5\u05d8\u05ea \u05d9\u05d5\u05de\u05df \u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd (changelog) \u05d0\u05d5 \u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05d9\u05d5\u05d2 \u05dc\u05d0\u05d1\u05d8\u05d7\u05d4.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>textname: AI Review with LiteLLMt<br><br>on:<br>  pull_request:<br>    types: [opened, synchronize, reopened]<br><br>jobs:<br>  ai-review:<br>    runs-on: ubuntu-latest<br>    steps:<br>      - name: Checkout code<br>        uses: actions\/checkout@v4<br><br>      - name: Get diff<br>        run: |<br>          git fetch origin ${{ github.base_ref }} --depth=1<br>          git diff origin\/${{ github.base_ref }}...HEAD > pr.diff<br><br>      - name: Call LiteLLM proxy<br>        env:<br>          LITELLM_API_KEY: ${{ secrets.LITELLM_API_KEY }}<br>        run: |<br>          PROMPT=$(cat &lt;&lt;'EOF'<br>          Review the following pull request diff and provide:<br>          1. A short summary<br>          2. Potential risks<br>          3. Suggested improvements<br><br>          Diff:<br>          EOF<br>          )<br>          DIFF_CONTENT=$(cat pr.diff)<br><br>          curl -s https:\/\/litellm.example.com\/v1\/chat\/completions \\<br>            -H \"Authorization: Bearer ${LITELLM_API_KEY}\" \\<br>            -H \"Content-Type: application\/json\" \\<br>            -d \"$(jq -n \\<br>              --arg model 'gpt-4o-mini' \\<br>              --arg system \"$PROMPT\" \\<br>              --arg user \"$DIFF_CONTENT\" \\<br>              '{<br>                model: $model,<br>                messages: [<br>                  {role: \"system\", content: $system},<br>                  {role: \"user\", content: $user}<br>                ]<br>              }')\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u05d3\u05e4\u05d5\u05e1 \u05d6\u05d4 \u05e2\u05d5\u05d1\u05d3 \u05d4\u05d9\u05d8\u05d1 \u05db\u05d0\u05e9\u05e8 \u05e8\u05d5\u05e6\u05d9\u05dd \u05dc\u05e7\u05d1\u05dc \u05d0\u05ea \u05e4\u05dc\u05d8 \u05d4-AI \u05db\u05d7\u05dc\u05e7 \u05de\u05ea\u05d4\u05dc\u05d9\u05da \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4, \u05d1\u05de\u05e7\u05d5\u05dd \u05db\u05e9\u05dc\u05d1 \u05e1\u05e7\u05d9\u05e8\u05d4 \u05d9\u05d3\u05e0\u05d9 \u05e0\u05e4\u05e8\u05d3. \u05e0\u05d9\u05ea\u05df \u05d2\u05dd \u05dc\u05e9\u05de\u05d5\u05e8 \u05d0\u05ea \u05d4\u05ea\u05d2\u05d5\u05d1\u05d4 \u05db\u05d4\u05e2\u05e8\u05d4 \u05d1-PR, \u05db\u05ea\u05d5\u05e6\u05e8 \u05d1\u05e0\u05d9\u05d4 (build artifact) \u05d0\u05d5 \u05db\u05e1\u05d9\u05db\u05d5\u05dd \u05de\u05e9\u05d9\u05de\u05d4 (job summary).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u05d3\u05d5\u05d2\u05de\u05d4 \u05e2\u05d1\u05d5\u05e8 GitLab CI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u05d1-GitLab, \u05d0\u05d5\u05ea\u05d5 \u05e8\u05e2\u05d9\u05d5\u05df \u05de\u05ea\u05de\u05e4\u05d4 \u05d1\u05e6\u05d5\u05e8\u05d4 \u05e0\u05e7\u05d9\u05d9\u05d4 \u05dc\u05ea\u05d4\u05dc\u05d9\u05da \u05e2\u05d1\u05d5\u05d3\u05d4 (pipeline) \u05e9\u05dc merge request. \u05d3\u05d5\u05d2\u05de\u05d4 \u05d6\u05d5 \u05de\u05e9\u05ea\u05de\u05e9\u05ea \u05d1\u05de\u05e9\u05d9\u05de\u05d4 (job) \u05d4\u05de\u05d1\u05d9\u05d0\u05d4 \u05d0\u05ea \u05d4-diff \u05d5\u05e9\u05d5\u05dc\u05d7\u05ea \u05d0\u05d5\u05ea\u05d5 \u05dc\u05e4\u05e8\u05d5\u05e7\u05e1\u05d9 \u05e9\u05dc LiteLLM.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>textstages:<br>  - ai_review<br><br>ai_review:<br>  stage: ai_review<br>  image: alpine:3.20<br>  variables:<br>    GIT_DEPTH: \"1\"<br>  before_script:<br>    - apk add --no-cache git curl jq<br>  script:<br>    - git fetch origin \"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME\" --depth=1<br>    - git diff \"origin\/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME...HEAD\" > mr.diff<br>    - |<br>      PROMPT=\"Review the following merge request diff and provide:<br>      1. A short summary<br>      2. Potential risks<br>      3. Suggested improvements\"<br>      DIFF_CONTENT=\"$(cat mr.diff)\"<br><br>      curl -s https:\/\/litellm.example.com\/v1\/chat\/completions \\<br>        -H \"Authorization: Bearer ${LITELLM_API_KEY}\" \\<br>        -H \"Content-Type: application\/json\" \\<br>        -d \"$(jq -n \\<br>          --arg model 'gpt-4o-mini' \\<br>          --arg system \"$PROMPT\" \\<br>          --arg user \"$DIFF_CONTENT\" \\<br>          '{<br>            model: $model,<br>            messages: [<br>              {role: \"system\", content: $system},<br>              {role: \"user\", content: $user}<br>            ]<br>          }')\"<br>  rules:<br>    - if: $CI_MERGE_REQUEST_IID<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u05d6\u05d4\u05d5 \u05d4\u05ea\u05d0\u05de\u05d4 \u05de\u05e6\u05d5\u05d9\u05e0\u05ea \u05e2\u05d1\u05d5\u05e8 GitLab \u05de\u05db\u05d9\u05d5\u05d5\u05df \u05e9\u05ea\u05d4\u05dc\u05d9\u05db\u05d9 \u05e2\u05d1\u05d5\u05d3\u05d4 \u05e9\u05dc merge request \u05d4\u05dd \u05db\u05d1\u05e8 \u05de\u05e7\u05d5\u05dd \u05d8\u05d1\u05e2\u05d9 \u05dc\u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05d5\u05ea. \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05e8\u05d7\u05d9\u05d1 \u05d0\u05ea \u05d0\u05d5\u05ea\u05d4 \u05de\u05e9\u05d9\u05de\u05d4 \u05db\u05d3\u05d9 \u05dc\u05e4\u05e8\u05e1\u05dd \u05d0\u05ea \u05d4\u05ea\u05d2\u05d5\u05d1\u05d4 \u05db\u05ea\u05d5\u05e6\u05e8 \u05e9\u05dc \u05d4\u05de\u05e9\u05d9\u05de\u05d4 (job artifact), \u05dc\u05e4\u05e8\u05e1\u05dd \u05d4\u05e2\u05e8\u05d4 \u05d1-merge request \u05d0\u05d5 \u05dc\u05d4\u05d6\u05d9\u05df \u05d0\u05ea \u05d4\u05e4\u05dc\u05d8 \u05dc\u05ea\u05d5\u05da \u05d1\u05e7\u05e8\u05ea \u05d0\u05d9\u05db\u05d5\u05ea (quality gate) \u05d1\u05d4\u05de\u05e9\u05da \u05d4\u05ea\u05d4\u05dc\u05d9\u05da.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u05d4\u05e2\u05e8\u05d5\u05ea \u05d9\u05d9\u05e9\u05d5\u05dd<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u05d0\u05dd \u05d0\u05ea\u05dd \u05d1\u05d5\u05e0\u05d9\u05dd \u05d6\u05d0\u05ea \u05e2\u05d1\u05d5\u05e8 \u05e1\u05d1\u05d9\u05d1\u05ea \u05d9\u05d9\u05e6\u05d5\u05e8, \u05e9\u05de\u05e8\u05d5 \u05e2\u05dc \u05e4\u05d5\u05e8\u05de\u05d8 \u05d4\u05e0\u05d7\u05d9\u05d4 \u05d5\u05ea\u05d2\u05d5\u05d1\u05d4 \u05de\u05d5\u05d1\u05e0\u05d4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u05dc\u05d3\u05d5\u05d2\u05de\u05d4, \u05d1\u05e7\u05e9\u05d5 \u05e4\u05dc\u05d8 \u05d1\u05e4\u05d5\u05e8\u05de\u05d8 JSON \u05db\u05d3\u05d9 \u05e9\u05ea\u05d4\u05dc\u05d9\u05da \u05d4\u05e2\u05d1\u05d5\u05d3\u05d4 \u05e9\u05dc\u05db\u05dd \u05d9\u05d5\u05db\u05dc \u05dc\u05e0\u05ea\u05d7 \u05d1\u05e6\u05d5\u05e8\u05d4 \u05d0\u05de\u05d9\u05e0\u05d4 \u05d0\u05ea \u05d7\u05d5\u05de\u05e8\u05ea \u05d4\u05d1\u05e2\u05d9\u05d5\u05ea, \u05d4\u05e1\u05d9\u05db\u05d5\u05dd \u05d5\u05d4\u05d4\u05de\u05dc\u05e6\u05d5\u05ea.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u05db\u05de\u05d5 \u05db\u05df, \u05de\u05d5\u05de\u05dc\u05e5 \u05dc\u05d4\u05e4\u05e8\u05d9\u05d3 \u05d1\u05d9\u05df \u05de\u05d5\u05d3\u05dc\u05d9\u05dd \u05e6\u05d9\u05d1\u05d5\u05e8\u05d9\u05d9\u05dd \u05dc\u05d1\u05d9\u05df \u05de\u05d0\u05d2\u05e8\u05d9\u05dd \u05e8\u05d2\u05d9\u05e9\u05d9\u05dd, \u05d5\u05dc\u05e0\u05ea\u05d1 \u05e4\u05e8\u05d5\u05d9\u05e7\u05d8\u05d9\u05dd \u05de\u05d5\u05d2\u05e0\u05d9\u05dd \u05dc\u05e1\u05e4\u05e7\u05d9\u05dd \u05d1\u05d0\u05d9\u05e8\u05d5\u05d7 \u05e2\u05e6\u05de\u05d9 \u05d0\u05d5 \u05dc\u05e1\u05e4\u05e7\u05d9\u05dd \u05de\u05d0\u05d5\u05e9\u05e8\u05d9\u05dd \u05d1\u05dc\u05d1\u05d3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u05e2\u05d1\u05d5\u05e8 \u05e1\u05d1\u05d9\u05d1\u05d5\u05ea \u05e2\u05ea\u05d9\u05e8\u05d5\u05ea GitLab, LiteLLM \u05d9\u05db\u05d5\u05dc \u05dc\u05d4\u05d9\u05d5\u05ea \u05e9\u05d9\u05de\u05d5\u05e9\u05d9 \u05d2\u05dd \u05db\u05e9\u05db\u05d1\u05ea \u05ea\u05d0\u05d9\u05de\u05d5\u05ea (compatibility layer) \u05de\u05d5\u05dc \u05de\u05e2\u05e8\u05db\u05d5\u05ea AI \u05d1\u05d0\u05d9\u05e8\u05d5\u05d7 \u05e2\u05e6\u05de\u05d9 \u05d0\u05d5 \u05de\u05e2\u05e8\u05db\u05d5\u05ea \u05e4\u05e0\u05d9\u05de\u05d9\u05d5\u05ea. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u05e2\u05d1\u05d5\u05e8 \u05ea\u05d4\u05dc\u05d9\u05db\u05d9 \u05e2\u05d1\u05d5\u05d3\u05d4 \u05de\u05de\u05d5\u05e7\u05d3\u05d9 GitHub, \u05d4\u05d5\u05d0 \u05de\u05e2\u05e0\u05d9\u05e7 \u05dc\u05db\u05dd \u05d3\u05e8\u05da \u05dc\u05d1\u05e6\u05e2 \u05e1\u05d8\u05e0\u05d3\u05e8\u05d8\u05d9\u05d6\u05e6\u05d9\u05d4 \u05e9\u05dc \u05d4\u05ea\u05e0\u05d4\u05d2\u05d5\u05ea \u05d4-AI \u05d1\u05d9\u05df \u05de\u05d0\u05d2\u05e8\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd, \u05d2\u05dd \u05db\u05d0\u05e9\u05e8 \u05e6\u05d5\u05d5\u05ea\u05d9\u05dd \u05de\u05e2\u05d3\u05d9\u05e4\u05d9\u05dd \u05de\u05d5\u05d3\u05dc\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd. \u05d1\u05e9\u05e0\u05d9 \u05d4\u05de\u05e7\u05e8\u05d9\u05dd, \u05d4\u05e2\u05e8\u05da \u05d4\u05d0\u05de\u05d9\u05ea\u05d9 \u05d0\u05d9\u05e0\u05d5 \u05e8\u05e7 \u05d4\u05d2\u05d9\u05e9\u05d4 \u05dc\u05de\u05d5\u05d3\u05dc, \u05d0\u05dc\u05d0 \u05d4\u05e9\u05dc\u05d9\u05d8\u05d4 \u05d5\u05d4\u05e2\u05e7\u05d1\u05d9\u05d5\u05ea.<\/p>\n\n\n\n<h4 class=\"wp-block-heading has-background\" style=\"background-color:#ebf6ff\">\u05d7\u05d1\u05e8\u05ea\u05e0\u05d5 \u05de\u05e1\u05e4\u05e7\u05ea \u05e8\u05d9\u05e9\u05d9\u05d5\u05e0\u05d5\u05ea \u05de\u05e0\u05d5\u05d9, \u05ea\u05de\u05d9\u05db\u05d4 \u05d5\u05e9\u05d9\u05e8\u05d5\u05ea\u05d9\u05dd \u05de\u05e0\u05d5\u05d4\u05dc\u05d9\u05dd \u05e2\u05d1\u05d5\u05e8 LiteLLM, git, GitLab \u05d5-GitHub.<br>\u05e6\u05e8\u05d5 \u05e7\u05e9\u05e8 \u05dc\u05db\u05dc \u05e9\u05d0\u05dc\u05d4: <a href=\"mailto:litellm@almtoolbox.com\" target=\"_blank\" rel=\"noreferrer noopener\">litellm@almtoolbox.com<\/a> <br>\u05d0\u05d5 \u05d4\u05ea\u05e7\u05e9\u05e8\u05d5 \u05d0\u05dc\u05d9\u05e0\u05d5<em><strong class=\"\">: 072-240-5222<\/strong><\/em><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>LiteLLM \u05d4\u05d5\u05d0 \u05d3\u05e8\u05da \u05de\u05e2\u05e9\u05d9\u05ea \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d9\u05db\u05d5\u05dc\u05d5\u05ea \u05d1\u05d9\u05e0\u05d4 \u05de\u05dc\u05d0\u05db\u05d5\u05ea\u05d9\u05ea (AI) \u05dc\u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 \u05de\u05d1\u05d5\u05e1\u05e1\u05ea Git \u05de\u05d1\u05dc\u05d9 \u05dc\u05d4\u05d9\u05e0\u05e2\u05dc \u05e2\u05dc \u05e1\u05e4\u05e7 \u05de\u05d5\u05d3\u05dc \u05d9\u05d7\u05d9\u05d3. \u05e2\u05d1\u05d5\u05e8 \u05e6\u05d5\u05d5\u05ea\u05d9\u05dd \u05d4\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05d1-GitHub \u05d0\u05d5 \u05d1-GitLab, \u05d4\u05d5\u05d0 \u05d9\u05db\u05d5\u05dc \u05dc\u05e9\u05de\u05e9 \u05db\u05d2\u05e9\u05e8 AI \u05de\u05d0\u05d5\u05d7\u05d3 \u05dc\u05e6\u05d5\u05e8\u05da \u05e1\u05e7\u05d9\u05e8\u05ea \u05e7\u05d5\u05d3, \u05e1\u05d9\u05d5\u05e2 \u05d1-commit, \u05e0\u05d9\u05ea\u05d5\u05d7 \u05d1\u05e7\u05e9\u05d5\u05ea \u05de\u05d9\u05d6\u05d5\u05d2 \u05d5\u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d5\u05ea CI. \u05d6\u05d4 \u05d4\u05d5\u05e4\u05da \u05d0\u05d5\u05ea\u05d5 \u05dc\u05e9\u05d9\u05de\u05d5\u05e9\u05d9 \u05d1\u05de\u05d9\u05d5\u05d7\u05d3 \u05db\u05d0\u05e9\u05e8&#8230;<\/p>\n","protected":false},"author":5,"featured_media":14018,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[96,112,1118],"tags":[1120,192,722,95,659,1010,334,1205,1224,1225,1226,1227],"class_list":["post-14019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-github","category-gitlab-ci","category-litellm","tag-ai-gateway","tag-ci-cd","tag-code-review-2","tag-devops","tag-devsecops","tag-github-actions","tag-gitlab-ci","tag-litellm","tag-llm-infrastructure","tag-merge-request-automation","tag-pull-request-automation","tag-self-hosted-ai"],"_links":{"self":[{"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/posts\/14019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/comments?post=14019"}],"version-history":[{"count":7,"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/posts\/14019\/revisions"}],"predecessor-version":[{"id":14027,"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/posts\/14019\/revisions\/14027"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/media\/14018"}],"wp:attachment":[{"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/media?parent=14019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/categories?post=14019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.almtoolbox.com\/blog_he\/wp-json\/wp\/v2\/tags?post=14019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}