patterns/agents/util.py (18 lines of code) (raw):

from anthropic import Anthropic import os import re client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"]) def llm_call(prompt: str, system_prompt: str = "", model="claude-3-5-sonnet-20241022") -> str: """ Calls the model with the given prompt and returns the response. Args: prompt (str): The user prompt to send to the model. system_prompt (str, optional): The system prompt to send to the model. Defaults to "". model (str, optional): The model to use for the call. Defaults to "claude-3-5-sonnet-20241022". Returns: str: The response from the language model. """ client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"]) messages = [{"role": "user", "content": prompt}] response = client.messages.create( model=model, max_tokens=4096, system=system_prompt, messages=messages, temperature=0.1, ) return response.content[0].text def extract_xml(text: str, tag: str) -> str: """ Extracts the content of the specified XML tag from the given text. Used for parsing structured responses Args: text (str): The text containing the XML. tag (str): The XML tag to extract content from. Returns: str: The content of the specified XML tag, or an empty string if the tag is not found. """ match = re.search(f'<{tag}>(.*?)</{tag}>', text, re.DOTALL) return match.group(1) if match else ""