route.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import os
  2. from pathlib import Path
  3. from fastapi import FastAPI, File, UploadFile
  4. from openai import OpenAI
  5. app = FastAPI()
  6. client = OpenAI(
  7. api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您没有配置环境变量,请在此处替换您的API-KEY
  8. base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", # 填写DashScope服务base_url
  9. )
  10. @app.get("/upload-filepath")
  11. async def create_upload_file(filepath: str = None,
  12. file_id: str = None,
  13. user_msg: str = '请准确提取文件中的表格内容,要求用字典返回并去掉金额单位、英文和空格'):
  14. # 读取文件内容(可选)
  15. # contents = await file.read()
  16. # 这里可以对文件进行进一步处理,比如保存到服务器上
  17. # with open(f"./{file.filename}", "wb") as f:
  18. # f.write(contents)
  19. if file_id is None:
  20. file_object = client.files.create(file=Path(filepath), purpose="file-extract")
  21. file_id = file_object.id
  22. # 初始化messages列表
  23. completion = client.chat.completions.create(
  24. model="qwen-long",
  25. messages=[
  26. {'role': 'system', 'content': 'You are a helpful assistant.'},
  27. {'role': 'system', 'content': f'fileid://{file_id}'},
  28. {'role': 'user', 'content': user_msg}
  29. ],
  30. )
  31. return {"file_id": file_id, "content": completion.choices[0].message.content}
  32. @app.post("/upload-file")
  33. async def create_upload_file(file: UploadFile = File(...),
  34. file_id: str = None,
  35. user_msg: str = '请准确提取文件中的表格内容,要求用字典返回并去掉金额单位、英文和空格'):
  36. if file_id is None:
  37. # 读取文件内容(可选)
  38. contents = await file.read()
  39. # 这里可以对文件进行进一步处理,比如保存到服务器上
  40. with open(f"./uploads/{file.filename}", "wb") as f:
  41. f.write(contents)
  42. file_object = client.files.create(file=Path(f"./uploads/{file.filename}"), purpose="file-extract")
  43. file_id = file_object.id
  44. # 初始化messages列表
  45. completion = client.chat.completions.create(
  46. model="qwen-long",
  47. messages=[
  48. {'role': 'system', 'content': 'You are a helpful assistant.'},
  49. {'role': 'system', 'content': f'fileid://{file_id}'},
  50. {'role': 'user', 'content': user_msg}
  51. ],
  52. )
  53. return {"file_id": file_id, "content": completion.choices[0].message.content}