bedrock.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import os
  2. import boto3
  3. from opendevin.core.config import config
  4. from opendevin.core.logger import opendevin_logger as logger
  5. AWS_ACCESS_KEY_ID = config.llm.aws_access_key_id
  6. AWS_SECRET_ACCESS_KEY = config.llm.aws_secret_access_key
  7. AWS_REGION_NAME = config.llm.aws_region_name
  8. # It needs to be set as an environment variable, if the variable is configured in the Config file.
  9. if AWS_ACCESS_KEY_ID is not None:
  10. os.environ['AWS_ACCESS_KEY_ID'] = AWS_ACCESS_KEY_ID
  11. if AWS_SECRET_ACCESS_KEY is not None:
  12. os.environ['AWS_SECRET_ACCESS_KEY'] = AWS_SECRET_ACCESS_KEY
  13. if AWS_REGION_NAME is not None:
  14. os.environ['AWS_REGION_NAME'] = AWS_REGION_NAME
  15. def list_foundation_models():
  16. try:
  17. # The AWS bedrock model id is not queried, if no AWS parameters are configured.
  18. if (
  19. AWS_REGION_NAME is None
  20. or AWS_ACCESS_KEY_ID is None
  21. or AWS_SECRET_ACCESS_KEY is None
  22. ):
  23. return []
  24. client = boto3.client(
  25. service_name='bedrock',
  26. region_name=AWS_REGION_NAME,
  27. aws_access_key_id=AWS_ACCESS_KEY_ID,
  28. aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
  29. )
  30. foundation_models_list = client.list_foundation_models(
  31. byOutputModality='TEXT', byInferenceType='ON_DEMAND'
  32. )
  33. model_summaries = foundation_models_list['modelSummaries']
  34. return ['bedrock/' + model['modelId'] for model in model_summaries]
  35. except Exception as err:
  36. logger.warning(
  37. '%s. Please config AWS_REGION_NAME AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY'
  38. ' if you want use bedrock model.',
  39. err,
  40. )
  41. return []
  42. def remove_error_modelId(model_list):
  43. return list(filter(lambda m: not m.startswith('bedrock'), model_list))