mirror of
https://github.com/sudoxreboot/groqd
synced 2026-04-14 11:36:49 +00:00
Add auto-fetch URLs option
This commit is contained in:
parent
923131b681
commit
e665cd2589
4 changed files with 45 additions and 0 deletions
|
|
@ -35,6 +35,7 @@ from .const import (
|
|||
CONF_SEARXNG_URL,
|
||||
CONF_SEARXNG_SAFESEARCH,
|
||||
CONF_SEARXNG_LANGUAGE,
|
||||
CONF_AUTO_FETCH_URLS,
|
||||
CONF_SEED,
|
||||
CONF_STOP,
|
||||
CONF_TEMPERATURE,
|
||||
|
|
@ -55,6 +56,7 @@ from .const import (
|
|||
DEFAULT_SEARXNG_URL,
|
||||
DEFAULT_SEARXNG_SAFESEARCH,
|
||||
DEFAULT_SEARXNG_LANGUAGE,
|
||||
DEFAULT_AUTO_FETCH_URLS,
|
||||
DOMAIN,
|
||||
)
|
||||
from .const import DEFAULT_MAX_TOKENS, CONF_MAX_TOKENS
|
||||
|
|
@ -293,6 +295,11 @@ class GroqdOptionsFlow(OptionsFlow):
|
|||
description={"suggested_value": options.get(CONF_SEARXNG_SAFESEARCH, DEFAULT_SEARXNG_SAFESEARCH)},
|
||||
default=options.get(CONF_SEARXNG_SAFESEARCH, DEFAULT_SEARXNG_SAFESEARCH),
|
||||
): NumberSelector(NumberSelectorConfig(min=0, max=2, step=1)),
|
||||
vol.Optional(
|
||||
CONF_AUTO_FETCH_URLS,
|
||||
description={"suggested_value": options.get(CONF_AUTO_FETCH_URLS, DEFAULT_AUTO_FETCH_URLS)},
|
||||
default=options.get(CONF_AUTO_FETCH_URLS, DEFAULT_AUTO_FETCH_URLS),
|
||||
): bool,
|
||||
vol.Optional(
|
||||
CONF_LLM_HASS_API,
|
||||
description={"suggested_value": options.get(CONF_LLM_HASS_API)},
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ CONF_SEARXNG_ENABLED = "searxng_enabled"
|
|||
CONF_SEARXNG_URL = "searxng_url"
|
||||
CONF_SEARXNG_SAFESEARCH = "searxng_safesearch"
|
||||
CONF_SEARXNG_LANGUAGE = "searxng_language"
|
||||
CONF_AUTO_FETCH_URLS = "auto_fetch_urls"
|
||||
|
||||
DEFAULT_CHAT_MODEL = "meta-llama/llama-4-maverick-17b-128e-instruct"
|
||||
DEFAULT_CONTEXT_MESSAGES = 20
|
||||
|
|
@ -43,3 +44,4 @@ DEFAULT_SEARXNG_ENABLED = True
|
|||
DEFAULT_SEARXNG_URL = "http://127.0.0.1:8800"
|
||||
DEFAULT_SEARXNG_SAFESEARCH = 1
|
||||
DEFAULT_SEARXNG_LANGUAGE = "en"
|
||||
DEFAULT_AUTO_FETCH_URLS = True
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ from .const import (
|
|||
CONF_SEARXNG_LANGUAGE,
|
||||
CONF_SEARXNG_SAFESEARCH,
|
||||
CONF_SEARXNG_URL,
|
||||
CONF_AUTO_FETCH_URLS,
|
||||
CONF_SEED,
|
||||
CONF_STOP,
|
||||
CONF_TEMPERATURE,
|
||||
|
|
@ -68,6 +69,7 @@ from .const import (
|
|||
DEFAULT_SEARXNG_LANGUAGE,
|
||||
DEFAULT_SEARXNG_SAFESEARCH,
|
||||
DEFAULT_SEARXNG_URL,
|
||||
DEFAULT_AUTO_FETCH_URLS,
|
||||
DEFAULT_TEMPERATURE,
|
||||
DEFAULT_TOOL_CHOICE,
|
||||
DEFAULT_TOP_P,
|
||||
|
|
@ -180,6 +182,18 @@ async def _run_fetch(hass: HomeAssistant, url: str, max_chars: int) -> dict[str,
|
|||
cleaned = cleaned[:max_chars]
|
||||
return {"url": url, "content_type": content_type, "text": cleaned}
|
||||
|
||||
|
||||
def _extract_urls(text: str, limit: int = 3) -> list[str]:
|
||||
urls = re.findall(r"https?://\\S+", text or "")
|
||||
cleaned = []
|
||||
for url in urls:
|
||||
url = url.rstrip(").,;!?\"'")
|
||||
if url not in cleaned:
|
||||
cleaned.append(url)
|
||||
if len(cleaned) >= limit:
|
||||
break
|
||||
return cleaned
|
||||
|
||||
async def _run_searxng(
|
||||
hass: HomeAssistant,
|
||||
options: dict[str, Any],
|
||||
|
|
@ -380,6 +394,23 @@ class GroqdConversationEntity(
|
|||
response=intent_response, conversation_id=conversation_id
|
||||
)
|
||||
|
||||
if options.get(CONF_AUTO_FETCH_URLS, DEFAULT_AUTO_FETCH_URLS):
|
||||
urls = _extract_urls(user_input.text)
|
||||
if urls:
|
||||
fetched_chunks = []
|
||||
for url in urls:
|
||||
try:
|
||||
fetched = await _run_fetch(self.hass, url, 2000)
|
||||
fetched_chunks.append(
|
||||
f"URL: {fetched['url']}\\nCONTENT: {fetched['text']}"
|
||||
)
|
||||
except Exception as err:
|
||||
fetched_chunks.append(f"URL: {url}\\nERROR: {err}")
|
||||
prompt_parts.append(
|
||||
"Fetched content from links provided by the user:\\n"
|
||||
+ "\\n\\n".join(fetched_chunks)
|
||||
)
|
||||
|
||||
if llm_api:
|
||||
prompt_parts.append(llm_api.api_prompt)
|
||||
|
||||
|
|
|
|||
|
|
@ -41,6 +41,11 @@
|
|||
"parallel_tool_calls": "Parallel tool calls",
|
||||
"response_format": "Response format",
|
||||
"memory_scope": "Memory scope",
|
||||
"searxng_enabled": "Enable SearxNG web search",
|
||||
"searxng_url": "SearxNG URL",
|
||||
"searxng_language": "SearxNG language",
|
||||
"searxng_safesearch": "SearxNG safe search",
|
||||
"auto_fetch_urls": "Auto-fetch URLs in user messages",
|
||||
"llm_hass_api": "Home Assistant LLM API"
|
||||
},
|
||||
"data_description": {
|
||||
|
|
|
|||
Loading…
Reference in a new issue