# Copyright (c) Alibaba, Inc. and its affiliates. import os from typing import List, Literal os.environ['CUDA_VISIBLE_DEVICES'] = '0' def infer_batch(engine: 'InferEngine', infer_requests: List['InferRequest']): request_config = RequestConfig(max_tokens=512, temperature=0) metric = InferStats() resp_list = engine.infer(infer_requests, request_config, metrics=[metric]) query0 = infer_requests[0].messages[0]['content'] print(f'query0: {query0}') print(f'response0: {resp_list[0].choices[0].message.content}') print(f'metric: {metric.compute()}') # metric.reset() # reuse def infer_stream(engine: 'InferEngine', infer_request: 'InferRequest'): request_config = RequestConfig(max_tokens=512, temperature=0, stream=True) metric = InferStats() gen_list = engine.infer([infer_request], request_config, metrics=[metric]) query = infer_request.messages[0]['content'] print(f'query: {query}\nresponse: ', end='') for resp in gen_list[0]: if resp is None: continue print(resp.choices[0].delta.content, end='', flush=True) print() print(f'metric: {metric.compute()}') def get_message(mm_type: Literal['text', 'image', 'video', 'audio']): if mm_type == 'text': message = {'role': 'user', 'content': 'who are you?'} elif mm_type == 'image': message = { 'role': 'user', 'content': [ { 'type': 'image', # url or local_path or PIL.Image or base64 'image': 'http://modelscope-open.oss-cn-hangzhou.aliyuncs.com/images/animal.png' }, { 'type': 'text', 'text': 'How many sheep are there in the picture?' } ] } elif mm_type == 'video': message = { 'role': 'user', 'content': [{ 'type': 'video', 'video': 'https://modelscope-open.oss-cn-hangzhou.aliyuncs.com/images/baby.mp4' }, { 'type': 'text', 'text': 'Describe this video.' }] } elif mm_type == 'audio': message = { 'role': 'user', 'content': [{ 'type': 'audio', 'audio': 'http://modelscope-open.oss-cn-hangzhou.aliyuncs.com/images/weather.wav' }, { 'type': 'text', 'text': 'What does this audio say?' }] } return message def get_data(mm_type: Literal['text', 'image', 'video', 'audio']): data = {} if mm_type == 'text': messages = [{'role': 'user', 'content': 'who are you?'}] elif mm_type == 'image': # The number of tags must be the same as len(images). messages = [{'role': 'user', 'content': 'How many sheep are there in the picture?'}] # Support URL/Path/base64/PIL.Image data['images'] = ['http://modelscope-open.oss-cn-hangzhou.aliyuncs.com/images/animal.png'] elif mm_type == 'video': messages = [{'role': 'user', 'content': '