MCPcopy Create free account
hub / github.com/unclecode/crawl4ai / extract_blocks

Function extract_blocks

crawl4ai/utils.py:844–878  ·  view source on GitHub ↗
(url, html, provider = DEFAULT_PROVIDER, api_token = None, base_url = None)

Source from the content-addressed store, hash-verified

842 }]
843
844def extract_blocks(url, html, provider = DEFAULT_PROVIDER, api_token = None, base_url = None):
845 # api_token = os.getenv('GROQ_API_KEY', None) if not api_token else api_token
846 api_token = PROVIDER_MODELS.get(provider, None) if not api_token else api_token
847
848 variable_values = {
849 "URL": url,
850 "HTML": escape_json_string(sanitize_html(html)),
851 }
852
853 prompt_with_variables = PROMPT_EXTRACT_BLOCKS
854 for variable in variable_values:
855 prompt_with_variables = prompt_with_variables.replace(
856 "{" + variable + "}", variable_values[variable]
857 )
858
859 response = perform_completion_with_backoff(provider, prompt_with_variables, api_token, base_url=base_url)
860
861 try:
862 blocks = extract_xml_data(["blocks"], response.choices[0].message.content)['blocks']
863 blocks = json.loads(blocks)
864 ## Add error: False to the blocks
865 for block in blocks:
866 block['error'] = False
867 except Exception as e:
868 parsed, unparsed = split_and_parse_json_objects(response.choices[0].message.content)
869 blocks = parsed
870 # Append all unparsed segments as onr error block and content is list of unparsed segments
871 if unparsed:
872 blocks.append({
873 "index": 0,
874 "error": True,
875 "tags": ["error"],
876 "content": unparsed
877 })
878 return blocks
879
880def extract_blocks_batch(batch_data, provider = "groq/llama3-70b-8192", api_token = None):
881 api_token = os.getenv('GROQ_API_KEY', None) if not api_token else api_token

Callers 1

process_sectionsFunction · 0.85

Calls 5

escape_json_stringFunction · 0.85
sanitize_htmlFunction · 0.85
extract_xml_dataFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…