Spaces:
Runtime error
Runtime error
| import torch | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| from PIL import Image | |
| import gradio as gr | |
| import time | |
| model = AutoModelForCausalLM.from_pretrained( | |
| "MILVLG/imp-v1-3b", | |
| torch_dtype=torch.float16, | |
| device_map="auto", | |
| trust_remote_code=True, | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained("MILVLG/imp-v1-3b", trust_remote_code=True) | |
| def response(USER_DATA, TOKEN) -> str: | |
| print(USER_DATA) | |
| MESSAGE = USER_DATA["text"] | |
| NUM_FILES = len(USER_DATA["files"]) | |
| FILES = USER_DATA["files"] | |
| SYSTEM_PROMPT = f""" | |
| A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed testcase related to image uploaded. You are tasked with generating detailed, step-by-step test cases for software functionality based on uploaded images. The user will provide one or more images of a software or website interface. For each image, generate a separate set of test cases following the format below: | |
| '''Description: Provide a brief explanation of the functionality being tested, as inferred from the image. | |
| Pre-conditions: Identify any setup requirements, dependencies, or conditions that must be met before testing can begin (e.g., user logged in, specific data pre-populated, etc.). | |
| Testing Steps: Outline a clear, numbered sequence of actions that a user would take to test the functionality in the image. | |
| Expected Result: Specify the expected outcome if the functionality is working as intended.''' | |
| Ensure that: | |
| Testcases should be related to validation of data, component interactions, navigation, etc. | |
| Each testcase should have it's own Description, Pre-conidtions, Testing Steps, Expected Result. | |
| USER: <image>\n{MESSAGE} | |
| ASSISTANT: | |
| """ | |
| RES = generate_answer(FILES, SYSTEM_PROMPT) | |
| response = f"{RES}." | |
| return response | |
| for i in range(len(response)): | |
| time.sleep(0.025) | |
| yield response[: i + 1] | |
| def generate_answer(IMAGES: list, SYSTEM_PROMPT) -> str: | |
| print(len(IMAGES)) | |
| INPUT_IDS = tokenizer(SYSTEM_PROMPT, return_tensors="pt").input_ids | |
| RESULT = "" | |
| for EACH_IMG in IMAGES: | |
| image_path = EACH_IMG["path"] | |
| image = Image.open(image_path) | |
| image_tensor = model.image_preprocess(image) | |
| output_ids = model.generate( | |
| inputs=INPUT_IDS, | |
| max_new_tokens=500, | |
| images=image_tensor, | |
| use_cache=False, | |
| )[0] | |
| CUR_RESULT = tokenizer.decode( | |
| output_ids[INPUT_IDS.shape[1] :], skip_special_tokens=True | |
| ).strip() | |
| RESULT = f"{RESULT} /n/n {CUR_RESULT}" | |
| return RESULT | |