{"id":14964667,"url":"https://github.com/cyclenerd/google-cloud-litellm-proxy","last_synced_at":"2025-11-17T03:23:57.365Z","repository":{"id":251261174,"uuid":"836878626","full_name":"Cyclenerd/google-cloud-litellm-proxy","owner":"Cyclenerd","description":"🚅 LiteLLM Proxy for Google Cloud Generative AI","archived":false,"fork":false,"pushed_at":"2025-08-04T13:16:27.000Z","size":1694,"stargazers_count":55,"open_issues_count":1,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-04T16:58:23.362Z","etag":null,"topics":["docker","gemini","gemini-api","gemini-pro","genai","genai-chatbot","google-cloud","google-cloud-platform","litellm","llama3","llm","lobe-chat","meta","openai","openai-api"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cyclenerd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"Cyclenerd"}},"created_at":"2024-08-01T18:41:22.000Z","updated_at":"2025-08-04T13:16:24.000Z","dependencies_parsed_at":"2024-10-28T15:44:27.055Z","dependency_job_id":"b0249db0-d083-46e9-832d-b3014ddf7b2d","html_url":"https://github.com/Cyclenerd/google-cloud-litellm-proxy","commit_stats":{"total_commits":38,"total_committers":3,"mean_commits":"12.666666666666666","dds":0.3157894736842105,"last_synced_commit":"5cc430fb077f116ba63fc1303206096c2b1aac40"},"previous_names":["cyclenerd/google-cloud-litellm-proxy"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Cyclenerd/google-cloud-litellm-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyclenerd%2Fgoogle-cloud-litellm-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyclenerd%2Fgoogle-cloud-litellm-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyclenerd%2Fgoogle-cloud-litellm-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyclenerd%2Fgoogle-cloud-litellm-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cyclenerd","download_url":"https://codeload.github.com/Cyclenerd/google-cloud-litellm-proxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyclenerd%2Fgoogle-cloud-litellm-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270671941,"owners_count":24625877,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","gemini","gemini-api","gemini-pro","genai","genai-chatbot","google-cloud","google-cloud-platform","litellm","llama3","llm","lobe-chat","meta","openai","openai-api"],"created_at":"2024-09-24T13:33:36.230Z","updated_at":"2025-11-17T03:23:57.318Z","avatar_url":"https://github.com/Cyclenerd.png","language":"Dockerfile","funding_links":["https://github.com/sponsors/Cyclenerd"],"categories":[],"sub_categories":[],"readme":"# LiteLLM Proxy for Google Cloud Generative AI on Vertex AI\n\nThis repository provides instructions to deploy a [LiteLLM proxy](https://github.com/BerriAI/litellm) server that allows you to interact with various Large Language Models (LLMs) hosted on Google Cloud Vertex AI using the OpenAI API format.\n\n![Screenshot: Lobe Chat](https://github.com/Cyclenerd/google-cloud-litellm-proxy/raw/master/img/lobe-chat.png)\n\nSupported models include:\n\n* Anthropic Claude\n* Google Gemini\n* Meta Llama 3\n* Mistral AI Large\n\nRequirements:\n\n* Google Cloud Project with billing enabled\n* Cloud Shell access within your project\n\nYou can execute everything using the Cloud Shell in your project.\n\n[![Open in Cloud Shell](https://gstatic.com/cloudssh/images/open-btn.png)](https://shell.cloud.google.com/cloudshell/open?shellonly=true\u0026ephemeral=false\u0026cloudshell_git_repo=https://github.com/Cyclenerd/google-cloud-litellm-proxy\u0026cloudshell_git_branch=master\u0026cloudshell_tutorial=README.md)\n\nFollow the steps below step by step (copy \u0026 paste).\n\n![Screenshot: Cloud Shell](https://github.com/Cyclenerd/google-cloud-litellm-proxy/raw/master/img/cloud-shell.png)\n\n\nOnly skip steps if you know what you are doing and are confident.\n\n## Authenticate\n\nAuthenticate your Google Cloud Account:\n\n```bash\ngcloud auth login\n```\n\n## Configuration\n\n\u003cwalkthrough-project-setup\u003e\u003c/walkthrough-project-setup\u003e\n\nSet Google Cloud project ID.\nReplace with your current Google Cloud project ID:\n\n```bash\nMY_PROJECT_ID=\"\u003cwalkthrough-project-id/\u003e\"\n```\n\nSet default `gcloud` project:\n\n```bash\ngcloud config set project \"$MY_PROJECT_ID\"\n```\n\nSet Google Cloud project number:\n\n```bash\nMY_PROJECT_NUMBER=\"$(gcloud projects list --filter=\"$MY_PROJECT_ID\" --format=\"value(PROJECT_NUMBER)\" --quiet)\"\necho \"Google Cloud project number: '$MY_PROJECT_NUMBER'\"\n```\n\nSet Google Cloud region:\n(Please note: Region other than `us-central1` can cause problems. Not all services and models are available in all regions.)\n\n```bash\nMY_REGION=\"us-central1\"\n```\n\nSet Artifact Registry repository name for Docker container images:\n\n```bash\nMY_ARTIFACT_REPOSITORY=\"llm-tools\"\n```\n\n### Enable APIs\n\nEnable Google Cloud APIs:\n\n \u003e Only necessary if the APIs are not yet activated in the project.\n\n\u003c!-- Cloud Shell copy\u0026paste does not work with bash for loop and comments --\u003e\n```bash\ngcloud services enable \\\n    iam.googleapis.com \\\n    aiplatform.googleapis.com \\\n    run.googleapis.com \\\n    artifactregistry.googleapis.com \\\n    cloudbuild.googleapis.com \\\n    containeranalysis.googleapis.com \\\n    containerscanning.googleapis.com \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\n### Enable Vertex AI Models (Manual Step)\n\nNavigate to the Model Garden model cards for each LLM you want to use and **enable** them:\n\n* Llama 3.1: \u003chttps://console.cloud.google.com/vertex-ai/publishers/meta/model-garden/llama3-405b-instruct-maas\u003e\n* Claude 3.5 Sonnet: \u003chttps://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-5-sonnet\u003e\n* Mistral large: \u003chttps://console.cloud.google.com/vertex-ai/publishers/mistralai/model-garden/mistral-large\u003e\n\nScreenshot:\n\n![Screenshot: Claude](https://github.com/Cyclenerd/google-cloud-litellm-proxy/raw/master/img/claude.png)\n\n## Create Service Accounts\n\nService account for LiteLLM proxy (Cloud Run):\n\n```bash\ngcloud iam service-accounts create \"litellm-proxy\" \\\n    --description=\"LiteLLM proxy (Cloud Run)\" \\\n    --display-name=\"LiteLLM proxy\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nGrant access to the project and Vertex AI API service:\n\n```bash\ngcloud projects add-iam-policy-binding \"$MY_PROJECT_ID\" \\\n    --member=\"serviceAccount:litellm-proxy@${MY_PROJECT_ID}.iam.gserviceaccount.com\" \\\n    --role=\"roles/serviceusage.serviceUsageConsumer\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n\ngcloud projects add-iam-policy-binding \"$MY_PROJECT_ID\" \\\n    --member=\"serviceAccount:litellm-proxy@${MY_PROJECT_ID}.iam.gserviceaccount.com\" \\\n    --role=\"roles/aiplatform.user\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nCreate service account for building Docker container images (Cloud Build):\n\n```bash\ngcloud iam service-accounts create \"docker-build\" \\\n    --description=\"Build Docker container images (Cloud Build)\" \\\n    --display-name=\"Docker build\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nGrant access to store Docker container images:\n\n```bash\ngcloud projects add-iam-policy-binding \"$MY_PROJECT_ID\" \\\n    --member=\"serviceAccount:docker-build@${MY_PROJECT_ID}.iam.gserviceaccount.com\" \\\n    --role=\"roles/artifactregistry.writer\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n\ngcloud projects add-iam-policy-binding \"$MY_PROJECT_ID\" \\\n    --member=\"serviceAccount:docker-build@${MY_PROJECT_ID}.iam.gserviceaccount.com\" \\\n    --role=\"roles/logging.logWriter\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nSet service account ID from service account for the creation of Docker container:\n\n```bash\nMY_CLOUD_BUILD_ACCOUNT_ID=\"$(gcloud iam service-accounts describe \"docker-build@${MY_PROJECT_ID}.iam.gserviceaccount.com\" --format=\"value(uniqueId)\" --quiet)\"\necho \"Cloud Build account ID: '$MY_CLOUD_BUILD_ACCOUNT_ID'\"\n```\n\n## Artifact Registry\n\nCreate Artifact Registry repositoriy for Docker container images:\n\n\u003e Only necessary if the repositoriy does not already exist in the project and region.\n\n```bash\ngcloud artifacts repositories create \"$MY_ARTIFACT_REPOSITORY\" \\\n    --repository-format=\"docker\" \\\n    --description=\"Docker contrainer registry for LiteLLM proxy\" \\\n    --location=\"$MY_REGION\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\n## Storage Bucket\n\nCreate bucket to store Cloud Build logs:\n\n```bash\ngcloud storage buckets create \"gs://docker-build-$MY_PROJECT_NUMBER\" \\\n    --location=\"$MY_REGION\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nGrant Cloud Build service account full access to bucket:\n\n```bash\ngcloud storage buckets add-iam-policy-binding \"gs://docker-build-$MY_PROJECT_NUMBER\" \\\n    --member=\"serviceAccount:docker-build@${MY_PROJECT_ID}.iam.gserviceaccount.com\" \\\n    --role=\"roles/storage.admin\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\n## Docker Container\n\nBuild Docker container image for LiteLLM proxy:\n\n```bash\ngcloud builds submit \\\n    --tag=\"${MY_REGION}-docker.pkg.dev/${MY_PROJECT_ID}/${MY_ARTIFACT_REPOSITORY}/litellm-proxy:latest\" \\\n    --timeout=\"1h\" \\\n    --region=\"$MY_REGION\" \\\n    --service-account=\"projects/${MY_PROJECT_ID}/serviceAccounts/${MY_CLOUD_BUILD_ACCOUNT_ID}\" \\\n    --gcs-source-staging-dir=\"gs://docker-build-$MY_PROJECT_NUMBER/source\" \\\n    --gcs-log-dir=\"gs://docker-build-$MY_PROJECT_NUMBER\" \\\n    --quiet\n```\n\n## Deploy LiteLLM Proxy\n\nGenerate a random string which acts as an OpenAI API key:\n\n```bash\nMY_RANDOM=$(openssl rand -hex 21)\necho \"API key: 'sk-$MY_RANDOM'\"\n```\n\nDeploy LiteLLM proxy Docker container image as public Cloud Run service:\n\n```bash\ngcloud run deploy \"litellm-proxy\" \\\n    --image=\"${MY_REGION}-docker.pkg.dev/${MY_PROJECT_ID}/${MY_ARTIFACT_REPOSITORY}/litellm-proxy:latest\" \\\n    --memory=1024Mi \\\n    --cpu=1 \\\n    --cpu-boost \\\n    --port=\"8080\" \\\n    --execution-environment=gen1 \\\n    --description=\"LiteLLM Proxy\" \\\n    --region=\"$MY_REGION\" \\\n    --set-env-vars=\"LITELLM_MODE=PRODUCTION,LITELLM_LOG=ERROR,VERTEXAI_PROJECT=${MY_PROJECT_ID},VERTEXAI_LOCATION=${MY_REGION},LITELLM_MASTER_KEY=sk-${MY_RANDOM}\" \\\n    --max-instances=1 \\\n    --allow-unauthenticated \\\n    --service-account \"litellm-proxy@${MY_PROJECT_ID}.iam.gserviceaccount.com\" \\\n    --quiet\n```\n\nDone! Now wait three to five minutes and then you can test via the proxy the LLM models:\n\n```bash\nMY_LITELLM_PROXY_URL=\"$(gcloud run services list --filter=\"litellm-proxy\" --format=\"value(URL)\" --quiet)\"\necho \"API host: '$MY_LITELLM_PROXY_URL'\"\necho \"API key: 'sk-$MY_RANDOM'\"\n```\n\nTest Google Gemini:\n\n```bash\ncurl --location \"${MY_LITELLM_PROXY_URL}/chat/completions\" \\\n    --header \"Content-Type: application/json\" \\\n    --header \"Authorization: Bearer sk-$MY_RANDOM\" \\\n    --data '{\"model\": \"google/gemini-1.5-pro\", \"messages\": [{\"role\": \"user\", \"content\": \"what llm are you\" }]}'\n```\n\nTest Meta Llama 3:\n\n```bash\ncurl --location \"${MY_LITELLM_PROXY_URL}/chat/completions\" \\\n    --header \"Content-Type: application/json\" \\\n    --header \"Authorization: Bearer sk-$MY_RANDOM\" \\\n    --data '{\"model\": \"meta/llama3-405b\", \"messages\": [{\"role\": \"user\", \"content\": \"what llm are you\" }]}'\n```\n\nTest Anthropic Claude 3.5 Sonnet:\n\n```bash\ncurl --location \"${MY_LITELLM_PROXY_URL}/chat/completions\" \\\n    --header \"Content-Type: application/json\" \\\n    --header \"Authorization: Bearer sk-$MY_RANDOM\" \\\n    --data '{\"model\": \"anthropic/claude-3-5-sonnet\", \"messages\": [{\"role\": \"user\", \"content\": \"what llm are you\" }]}'\n```\n\nTest Anthropic Claude 3.7 Sonnet (non-thinking):\n\n```bash\ncurl --location \"${MY_LITELLM_PROXY_URL}/chat/completions\" \\\n    --header \"Content-Type: application/json\" \\\n    --header \"Authorization: Bearer sk-$MY_RANDOM\" \\\n    --data '{\"model\": \"anthropic/claude-3-7-sonnet\", \"messages\": [{\"role\": \"user\", \"content\": \"what AI are you\" }]}'\n```\n\nTest Anthropic Claude 3.7 Sonnet (thinking):\n\n```bash\ncurl --location \"${MY_LITELLM_PROXY_URL}/chat/completions\" \\\n    --header \"Content-Type: application/json\" \\\n    --header \"Authorization: Bearer sk-$MY_RANDOM\" \\\n    --data '{\"model\": \"anthropic/claude-3-7-sonnet\", \"messages\": [{\"role\": \"user\", \"content\": \"what AI are you\", \"thinking\": {\"type\": \"enabled\", \"budget_tokens\": 1600}, \"additional_drop_params\": [\"top_p\", \"top_k\"]}]}'\n```\n\nTest Mistral AI Mistral Large:\n\n```bash\ncurl --location \"${MY_LITELLM_PROXY_URL}/chat/completions\" \\\n    --header \"Content-Type: application/json\" \\\n    --header \"Authorization: Bearer sk-$MY_RANDOM\" \\\n    --data '{\"model\": \"mistralai/mistral-large\", \"messages\": [{\"role\": \"user\", \"content\": \"what llm are you\" }]}'\n```\n\n## [Optional] Deploy Lobe Chat\n\nBuild Docker container image for [🤯 Lobe Chat](https://github.com/lobehub/lobe-chat) frontend:\n\n\u003e ⏳ Will take approx. 15 minutes\n\n```bash\nMY_LOBE_CHAT_VERSION=\"v1.7.8\"\ngcloud builds submit \"https://github.com/lobehub/lobe-chat.git\" \\\n    --git-source-revision=\"$MY_LOBE_CHAT_VERSION\" \\\n    --tag=\"${MY_REGION}-docker.pkg.dev/${MY_PROJECT_ID}/${MY_ARTIFACT_REPOSITORY}/lobe-chat:latest\" \\\n    --timeout=\"1h\" \\\n    --region=\"$MY_REGION\" \\\n    --service-account=\"projects/${MY_PROJECT_ID}/serviceAccounts/${MY_CLOUD_BUILD_ACCOUNT_ID}\" \\\n    --gcs-log-dir=\"gs://docker-build-$MY_PROJECT_NUMBER\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nCreate service account for Lobe Chat (Cloud Run):\n\n```bash\ngcloud iam service-accounts create \"lobe-chat\" \\\n    --description=\"Lobe Chat (Cloud Run)\" \\\n    --display-name=\"Lobe Chat\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nGenerate a random string which acts as an password for Lobe Chat:\n\n```bash\nMY_ACCESS_CODE=$(openssl rand -hex 12)\necho \"Password: '$MY_ACCESS_CODE'\"\n```\n\nDeploy Cloud Run service with Lobe Chat frontend:\n\n```bash\ncp -f \"lobe-chat-envs.yaml\" \"my-lobe-chat-envs.yaml\"\necho \u003e\u003e \"my-lobe-chat-envs.yaml\"\necho \"OPENAI_API_KEY: sk-${MY_RANDOM}\" \u003e\u003e \"my-lobe-chat-envs.yaml\"\necho \"OPENAI_PROXY_URL: $MY_LITELLM_PROXY_URL\" \u003e\u003e \"my-lobe-chat-envs.yaml\"\necho \"ACCESS_CODE: $MY_ACCESS_CODE\" \u003e\u003e \"my-lobe-chat-envs.yaml\"\ngcloud run deploy \"lobe-chat\" \\\n    --image=\"${MY_REGION}-docker.pkg.dev/${MY_PROJECT_ID}/${MY_ARTIFACT_REPOSITORY}/lobe-chat:latest\" \\\n    --memory=512Mi \\\n    --cpu=1 \\\n    --cpu-boost \\\n    --execution-environment=gen1 \\\n    --description=\"Lobe Chat\" \\\n    --region=\"$MY_REGION\" \\\n    --env-vars-file=\"my-lobe-chat-envs.yaml\" \\\n    --max-instances=1 \\\n    --allow-unauthenticated \\\n    --service-account \"lobe-chat@${MY_PROJECT_ID}.iam.gserviceaccount.com\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nDone! You can now access the Lobe Chat frontend and chat with the LLM models:\n\n```bash\nMY_LOBECHAT_URL=\"$(gcloud run services list --filter=\"lobe-chat\" --format=\"value(URL)\" --quiet)\"\necho \"URL: '$MY_LOBECHAT_URL'\"\necho \"Password: '$MY_ACCESS_CODE'\"\n```\n\n## Clean Up\n\nIf you want to delete everything, carry out the following steps.\n\n[Optional] Delete Cloud Run service and service account from Lobe Chat frontend:\n\n```bash\ngcloud run services delete \"lobe-chat\" \\\n    --region=\"$MY_REGION\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n\ngcloud iam service-accounts delete \"lobe-chat@${MY_PROJECT_ID}.iam.gserviceaccount.com\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nDelete Cloud Run service and service account from LiteLLM proxy:\n\n```bash\ngcloud run services delete \"litellm-proxy\" \\\n    --region=\"$MY_REGION\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n\ngcloud iam service-accounts delete \"litellm-proxy@${MY_PROJECT_ID}.iam.gserviceaccount.com\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nDelete Artifact Registry repositoriy:\n\n```bash\ngcloud artifacts repositories delete \"$MY_ARTIFACT_REPOSITORY\" \\\n    --location=\"$MY_REGION\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nDelete service account for the creation of Docker container (Cloud Build):\n\n```bash\ngcloud iam service-accounts delete \"docker-build@${MY_PROJECT_ID}.iam.gserviceaccount.com\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\nDelete bucket to store Cloud Build logs\n\n```bash\ngcloud storage rm -r \"gs://docker-build-$MY_PROJECT_NUMBER\" \\\n    --project=\"$MY_PROJECT_ID\" \\\n    --quiet\n```\n\n## Organization Policies\n\nIf your project is a standard Google Cloud project, no adjustments should be necessary and all the steps mentioned should work without errors.\n\nHowever, if your Google project or organization has been customized and Organization Policies have been rolled out, the following may cause problems. Make sure they are set as mentioned here for your project.\n\n| Constraint                     | Value           |\n|--------------------------------|-----------------|\n| gcp.resourceLocations          | in:us-locations |\n| run.allowedIngress             | is:all          |\n| iam.allowedPolicyMemberDomains | allowAll        |\n\nYAML for [Fabric FAST Project Module](https://github.com/GoogleCloudPlatform/cloud-foundation-fabric/tree/master/modules/project#organization-policiesd):\n\n```yaml\norg_policies:\n  \"gcp.resourceLocations\":\n    rules:\n    - allow:\n        values:\n        - in:us-locations\n  \"run.allowedIngress\":\n    rules:\n    - allow:\n        values:\n        - is:all\n  \"iam.allowedPolicyMemberDomains\":\n    rules:\n    - allow:\n        all: true\n```\n\n## License\n\nAll files in this repository are under the [Apache License, Version 2.0](https://github.com/Cyclenerd/google-cloud-litellm-proxy/blob/master/LICENSE) unless noted otherwise.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyclenerd%2Fgoogle-cloud-litellm-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyclenerd%2Fgoogle-cloud-litellm-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyclenerd%2Fgoogle-cloud-litellm-proxy/lists"}