Spaces:
Runtime error
Runtime error
"""Util that calls SceneXplain. | |
In order to set this up, you need API key for the SceneXplain API. | |
You can obtain a key by following the steps below. | |
- Sign up for a free account at https://scenex.jina.ai/. | |
- Navigate to the API Access page (https://scenex.jina.ai/api) and create a new API key. | |
""" | |
from typing import Dict | |
import requests | |
from langchain_core.pydantic_v1 import BaseModel, BaseSettings, Field, root_validator | |
from langchain.utils import get_from_dict_or_env | |
class SceneXplainAPIWrapper(BaseSettings, BaseModel): | |
"""Wrapper for SceneXplain API. | |
In order to set this up, you need API key for the SceneXplain API. | |
You can obtain a key by following the steps below. | |
- Sign up for a free account at https://scenex.jina.ai/. | |
- Navigate to the API Access page (https://scenex.jina.ai/api) | |
and create a new API key. | |
""" | |
scenex_api_key: str = Field(..., env="SCENEX_API_KEY") | |
scenex_api_url: str = "https://api.scenex.jina.ai/v1/describe" | |
def _describe_image(self, image: str) -> str: | |
headers = { | |
"x-api-key": f"token {self.scenex_api_key}", | |
"content-type": "application/json", | |
} | |
payload = { | |
"data": [ | |
{ | |
"image": image, | |
"algorithm": "Ember", | |
"languages": ["en"], | |
} | |
] | |
} | |
response = requests.post(self.scenex_api_url, headers=headers, json=payload) | |
response.raise_for_status() | |
result = response.json().get("result", []) | |
img = result[0] if result else {} | |
return img.get("text", "") | |
def validate_environment(cls, values: Dict) -> Dict: | |
"""Validate that api key exists in environment.""" | |
scenex_api_key = get_from_dict_or_env( | |
values, "scenex_api_key", "SCENEX_API_KEY" | |
) | |
values["scenex_api_key"] = scenex_api_key | |
return values | |
def run(self, image: str) -> str: | |
"""Run SceneXplain image explainer.""" | |
description = self._describe_image(image) | |
if not description: | |
return "No description found." | |
return description | |