赞
踩
项目下载
模型下载
SwissArmyTransformer>=0.4.4
#torch>1.10.0
#torchvision
transformers>=4.27.1
mdtex2html
gradio
由于前面已经下载了模型,所以直接使用api_hf.py,但是原有api只有基于base64的接口,所以我这里加上了基于公开url图片的接口。
import os import json from transformers import AutoTokenizer, AutoModel import uvicorn from fastapi import FastAPI, Request import datetime from model import process_image import torch import requests import base64 import tempfile import os tokenizer = AutoTokenizer.from_pretrained("/home/panxiujin/model/vlm", trust_remote_code=True) model = AutoModel.from_pretrained("/home/panxiujin/model/vlm", trust_remote_code=True).half().cuda() app = FastAPI() @app.post('/imgByBase') async def visual_glm(request: Request): json_post_raw = await request.json() print("Start to process request") json_post = json.dumps(json_post_raw) request_data = json.loads(json_post) history = request_data.get("history") image_encoded = request_data.get("image") query = request_data.get("text") image_path = process_image(image_encoded) with torch.no_grad(): result = model.stream_chat(tokenizer, image_path, query, history=history) last_result = None for value in result: last_result = value answer = last_result[0] if os.path.isfile(image_path): os.remove(image_path) now = datetime.datetime.now() time = now.strftime("%Y-%m-%d %H:%M:%S") response = { "result": answer, "history": history, "status": 200, "time": time } return response async def process_image_url(image_url): # 从远程 URL 获取图片内容 response = requests.get(image_url) # 将图片内容进行 Base64 编码 image_encoded = base64.b64encode(response.content).decode('utf-8') # 使用短的文件名保存图像 _, temp_image_path = tempfile.mkstemp(suffix=".png") with open(temp_image_path, "wb") as temp_image_file: temp_image_file.write(base64.b64decode(image_encoded)) return temp_image_path @app.post('/imgByUrl') async def visual_glm_url(request: Request): json_post_raw = await request.json() print("Start to process request") json_post = json.dumps(json_post_raw) request_data = json.loads(json_post) history = request_data.get("history") image_url = request_data.get("image") query = request_data.get("text") # 异步调用 process_image 函数 image_path = await process_image_url(image_url) with torch.no_grad(): result = model.stream_chat(tokenizer, image_path, query, history=history) last_result = None for value in result: last_result = value answer = last_result[0] # 删除临时文件 os.remove(image_path) now = datetime.datetime.now() time = now.strftime("%Y-%m-%d %H:%M:%S") response = { "result": answer, "history": history, "status": 200, "time": time } return response if __name__ == "__main__": uvicorn.run(app, host='0.0.0.0', port=1549, workers=1)
调用base64的
curl --request POST \
--url http://127.0.0.1:1549/imgByUrl \
--header 'content-type: application/json' \
--data '{
"image": "https://zhengxin-pub.cdn.bcebos.com/mark/9cd6f8cc3cd20943e1769ac6a67ebeec.jpg?x-bce-process=image/resize,m_lfit,w_112",
"text": "这个商标有什么图形?有哪些图素?",
"history": []
}'
调用url的
curl --request POST \
--url http://127.0.0.1:1549/imgByUrl \
--header 'content-type: application/json' \
--data '{
"image": "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",
"text": "这个商标有什么图形?有哪些图素?",
"history": []
}'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。