import base64 import requests import time import pdb import dashscope from dashscope import MultiModalConversation from PIL import Image import io from openai import OpenAI import json def resize_encode_image(image_path, screen_scale_ratio=1): with Image.open(image_path) as img: new_width = int(img.width * screen_scale_ratio) new_height = int(img.height * screen_scale_ratio) resized_img = img.resize((new_width, new_height), Image.LANCZOS) buffered = io.BytesIO() resized_img.save(buffered, format="PNG") img_base64 = base64.b64encode(buffered.getvalue()).decode('utf-8') return img_base64 # with open(image_path, "rb") as image_file: # return base64.b64encode(image_file.read()).decode('utf-8') def inference_chat(chat, model, api_url, token): messages = [] for role, content in chat: messages.append({"role": role, "content": content}) payload = json.dumps({ "model": "gpt-4o", "messages": messages }) headers = { 'Accept': 'application/json', 'Authorization': f'Bearer {token}', 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)', 'Content-Type': 'application/json' } response = requests.request("POST", api_url, headers=headers, data=payload) data = response.json() print(data) return data['choices'][0]['message']['content'] # client = OpenAI( # # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx", # api_key=token, # base_url=api_url, # ) # num_try = 5 # for _ in range(num_try): # try: # completion = client.chat.completions.create( # model=model, # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models # messages=messages # ) # except: # print("Network Error:") # try: # print(completion.model_dump_json()) # except: # print("Request Failed") # time.sleep(2) # else: # break # dashscope.base_http_api_url = api_url # num_try = 5 # for _ in range(num_try): # try: # response = MultiModalConversation.call(api_key=token, model=model, messages=messages) # response = response['output']['choices'][0]['message']['content'][0]["text"] # except Exception as e: # print(f"Network Error: {e}") # try: # print(response) # except: # print("Request Failed") # time.sleep(2) # else: # break # return response # return json.loads(completion.model_dump_json())['choices'][0]['message']['content'] # headers = { # "Content-Type": "application/json", # "Authorization": f"Bearer {token}" # } # data = { # "model": model, # "messages": [], # "max_tokens": 2048, # 'temperature': 0.0, # "seed": 1234 # }