'''Functions to summarize article content.''' import os import logging from openai import OpenAI def summarize_content(content: str) -> str: '''Generates summary of article content using Modal inference endpoint. Args: content: string containing the text content to be summarized Returns: Summarized text as string ''' logger = logging.getLogger(__name__ + '.summarize_content') logger.info('Summarizing extracted content') client = OpenAI(api_key=os.environ['MODAL_API_KEY']) client.base_url = ( 'https://gperdrizet--vllm-openai-compatible-summarization-serve.modal.run/v1' ) # Default to first avalible model model = client.models.list().data[0] model_id = model.id # messages = [ # { # 'role': 'system', # 'content': ('You are a research assistant, skilled in summarizing documents in just '+ # 'a few sentences. Your document summaries should be a maximum of 2 to 4 sentences long.'), # 'role': 'user', # 'content': content # } # ] messages = [ { 'role': 'system', 'content': f'Summarize the following text in 50 words returning only the summary: {content}' } ] completion_args = { 'model': model_id, 'messages': messages, # "frequency_penalty": args.frequency_penalty, # "max_tokens": 128, # "n": args.n, # "presence_penalty": args.presence_penalty, # "seed": args.seed, # "stop": args.stop, # "stream": args.stream, # "temperature": args.temperature, # "top_p": args.top_p, } try: response = client.chat.completions.create(**completion_args) except Exception as e: # pylint: disable=broad-exception-caught response = None logger.error('Error during Modal API call: %s', e) if response is not None: return response.choices[0].message.content else: return None