import json import time import requests import jwt def get_access_token(client_email, private_key): current_time = int(time.time()) expiration_time = current_time + 600 claims = { 'iss': client_email, 'scope': 'https://www.googleapis.com/auth/cloud-platform', 'aud': 'https://oauth2.googleapis.com/token', 'exp': expiration_time, 'iat': current_time } try: signed_jwt = jwt.encode( claims, private_key, algorithm='RS256' ) except Exception as e: return False, e response = requests.post( 'https://oauth2.googleapis.com/token', data={ 'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer', 'assertion': signed_jwt } ) if response.status_code == 200: return True, response.json()['access_token'] else: return False, response.text def get_access_token_refresh(client_id, client_secret, refresh_token): token_url = "https://oauth2.googleapis.com/token" data = { "client_id": client_id, "client_secret": client_secret, "refresh_token": refresh_token, "grant_type": "refresh_token" } response = requests.post(token_url, data=data) if response.status_code == 200: return True, response.json()["access_token"] else: return False, response.text def get_gemini_models(key): url_getListModel = f"https://generativelanguage.googleapis.com/v1beta/models?key={key}&pageSize=1000" response = requests.get(url_getListModel) if response.status_code == 200: models = response.json() model_list = [] for model in models['models']: #model_list[model['name'].split('/')[1]] = model['displayName'] model_name = f"{model['name'].split('/')[1]}" # ({model['displayName']})" model_list.append(model_name) return model_list else: return "" def send_fake_gemini_request(key, model='gemini-1.5-flash'): url = f'https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent?key={key}' payload = { "contents": [{ "role": "user", "parts": [{ "text": "" }] }], "generationConfig": { "maxOutputTokens": 0, } } try: response = requests.post(url=url, headers={'Content-Type': 'application/json'}, json=payload) err_msg = response.json().get('error', '') return err_msg except: return None def send_gemini_request(key, payload, model='gemini-1.5-flash'): url = f'https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent?key={key}' response = requests.post(url=url, headers={'Content-Type': 'application/json'}, json=payload) if response.status_code == 200: return True, response.json() else: return False, response.text async def send_gcp_request(session, project_id, access_token, payload, region='us-east5', model='claude-3-5-sonnet@20240620'): VERTEX_URL = f'https://{region}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{region}/publishers/anthropic/models/{model}:streamRawPredict' headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json; charset=utf-8' } async with session.post(url=VERTEX_URL, headers=headers, data=payload) as response: if response.status != 200: response_data = await response.text() return json.loads(response_data) return await response.json()