google_ai_api.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. """
  2. @author: luojunhui
  3. """
  4. from google import genai
  5. class GoogleAIAPI(object):
  6. """
  7. Google 视频内容理解API
  8. """
  9. def __init__(self):
  10. self.api_key = 'AIzaSyBAFFL6yHa4kUK-YcuAw8tbiSHQB6oJG34'
  11. self.client = genai.Client(api_key=self.api_key)
  12. def upload_file(self, file_path: str):
  13. """
  14. file_path: 文件路径
  15. """
  16. print("start uploading file: {}".format(file_path))
  17. try:
  18. video_file = self.client.files.upload(file=file_path)
  19. file_name = video_file.name
  20. file_state = video_file.state.name
  21. expire_time = video_file.expiration_time
  22. print("success uploaded file: {}".format(file_path))
  23. return file_name, file_state, expire_time
  24. except Exception as e:
  25. print("fail to upload file: {} because {}".format(file_path, e))
  26. return None
  27. def get_file_status(self, file_name: str,):
  28. """
  29. 获取文件的状态
  30. file_name: 文件名称
  31. """
  32. try:
  33. video_file = self.client.files.get(name=file_name)
  34. state = video_file.state.name
  35. return state
  36. except Exception as e:
  37. print(e)
  38. return None
  39. def get_google_file(self, file_name: str):
  40. """
  41. 获取文件
  42. file_name: 文件名称
  43. """
  44. try:
  45. video_file = self.client.files.get(name=file_name)
  46. return video_file
  47. except Exception as e:
  48. print(e)
  49. return None
  50. def get_video_text(self, prompt, video_file):
  51. """
  52. 获取视频文本
  53. prompt: 提示词
  54. video_file: <class 'google.genai.types.File'>
  55. """
  56. response = self.client.models.generate_content(
  57. model='gemini-1.5-pro',
  58. contents=[
  59. video_file,
  60. prompt
  61. ]
  62. )
  63. return response.text