import os from pathlib import Path from fastapi import FastAPI, File, UploadFile from openai import OpenAI app = FastAPI() client = OpenAI( api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您没有配置环境变量,请在此处替换您的API-KEY base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", # 填写DashScope服务base_url ) DEFAULT_USER_MSG = "解析文件中的表格内容:要求准确识别金额等小数的位数,日期用yyyy-MM-dd的格式返回,去掉金额单位、英文和多余的空格,结果用字典返回" @app.get("/upload-filepath") async def create_upload_file(filepath: str = None, file_id: str = None, user_msg: str = DEFAULT_USER_MSG): # 读取文件内容(可选) # contents = await file.read() # 这里可以对文件进行进一步处理,比如保存到服务器上 # with open(f"./{file.filename}", "wb") as f: # f.write(contents) if file_id is None: file_object = client.files.create(file=Path(filepath), purpose="file-extract") file_id = file_object.id # 初始化messages列表 completion = client.chat.completions.create( model="qwen-long", temperature=0.1, presence_penalty=1, messages=[ {'role': 'system', 'content': 'You are a helpful assistant.'}, {'role': 'system', 'content': f'fileid://{file_id}'}, {'role': 'user', 'content': user_msg} ], ) return {"file_id": file_id, "content": completion.choices[0].message.content} @app.post("/upload-file") async def create_upload_file(file: UploadFile = File(...), file_id: str = None, user_msg: str = DEFAULT_USER_MSG): if file_id is None: # 读取文件内容(可选) contents = await file.read() # 这里可以对文件进行进一步处理,比如保存到服务器上 with open(f"./uploads/{file.filename}", "wb") as f: f.write(contents) file_object = client.files.create(file=Path(f"./uploads/{file.filename}"), purpose="file-extract") file_id = file_object.id # 初始化messages列表 completion = client.chat.completions.create( model="qwen-long", temperature=0.1, presence_penalty=1, messages=[ {'role': 'system', 'content': 'You are a helpful assistant.'}, {'role': 'system', 'content': f'fileid://{file_id}'}, {'role': 'user', 'content': user_msg} ], ) return {"file_id": file_id, "content": completion.choices[0].message.content}