Skip to main content

LangChain tools for Quercle web search and URL fetching

Project description

quercle-langchain

LangChain tools for Quercle web search and URL fetching.

Installation

uv add langchain-quercle

Or with pip:

pip install langchain-quercle

Quick Start

from quercle_langchain import QuercleSearchTool, QuercleFetchTool

# Initialize tools (uses QUERCLE_API_KEY env var by default)
search = QuercleSearchTool()
fetch = QuercleFetchTool()

# Or with explicit API key
search = QuercleSearchTool(api_key="qk_...")
fetch = QuercleFetchTool(api_key="qk_...")

Standalone Tool Usage

Use the tools directly without any LLM:

Search

from quercle_langchain import QuercleSearchTool

search = QuercleSearchTool()

# Basic search
result = search.invoke({"query": "What is TypeScript?"})
print(result)

# With domain filtering
result = search.invoke({
    "query": "machine learning tutorials",
    "allowed_domains": ["*.edu", "*.org"],
    "blocked_domains": ["ads.com"],
})

Fetch

from quercle_langchain import QuercleFetchTool

fetch = QuercleFetchTool()

result = fetch.invoke({
    "url": "https://docs.python.org/3/whatsnew/3.12.html",
    "prompt": "Summarize the key new features in bullet points",
})
print(result)

Async Usage

Both tools support async operations:

import asyncio
from quercle_langchain import QuercleSearchTool, QuercleFetchTool

async def main():
    search = QuercleSearchTool()
    fetch = QuercleFetchTool()

    # Async search
    result = await search.ainvoke({"query": "async Python programming"})
    print(result)

    # Async fetch
    result = await fetch.ainvoke({
        "url": "https://example.com",
        "prompt": "Extract main topics",
    })
    print(result)

asyncio.run(main())

Usage with LangChain Chat Models

Using bind_tools() for Single Interactions

Bind tools directly to a chat model for single-turn tool calling:

from langchain_openai import ChatOpenAI
from quercle_langchain import QuercleSearchTool, QuercleFetchTool

# Initialize tools and model
tools = [QuercleSearchTool(), QuercleFetchTool()]
llm = ChatOpenAI(model="gpt-4o")

# Bind tools to the model
llm_with_tools = llm.bind_tools(tools)

# Invoke - the model will decide whether to use tools
response = llm_with_tools.invoke("Search for the latest Python 3.13 features")

# Access tool calls from the response
if response.tool_calls:
    for tool_call in response.tool_calls:
        print(f"Tool: {tool_call['name']}")
        print(f"Args: {tool_call['args']}")

Using Agents for Multi-Step Tasks

For autonomous multi-step tasks, use create_agent:

from langchain.agents import create_agent
from quercle_langchain import QuercleSearchTool, QuercleFetchTool

# Initialize tools
tools = [QuercleSearchTool(), QuercleFetchTool()]

# Create the agent
agent = create_agent(
    model="gpt-4o",  # or "claude-sonnet-4-5-20250929", "gemini-2.0-flash", etc.
    tools=tools,
    system_prompt="You are a helpful research assistant.",
)

# Run the agent
result = agent.invoke({
    "messages": [{"role": "user", "content": "Search for the latest Python release and summarize the key features"}]
})

# Print the final response
print(result["messages"][-1].content)

With Other LLM Providers

Both bind_tools() and create_agent() work with any LangChain-compatible chat model:

# With Anthropic
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-sonnet-4-20250514")
llm_with_tools = llm.bind_tools(tools)

# With Google
from langchain_google_genai import ChatGoogleGenerativeAI
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash")
llm_with_tools = llm.bind_tools(tools)

# Or use create_agent with model strings directly
from langchain.agents import create_agent
agent = create_agent(model="claude-sonnet-4-5-20250929", tools=tools)
agent = create_agent(model="gemini-2.0-flash", tools=tools)

Configuration

Environment Variable

Set your API key as an environment variable:

export QUERCLE_API_KEY=qk_your_api_key_here

Tool Parameters

Both tools accept these optional parameters:

  • api_key: Your Quercle API key (falls back to QUERCLE_API_KEY env var)
  • timeout: Request timeout in seconds
tool = QuercleSearchTool(
    api_key="qk_...",
    timeout=60.0,
)

Tool Descriptions

QuercleSearchTool

  • Name: search
  • Description: Search the web and get AI-synthesized answers with citations
  • Arguments:
    • query (required): The search query
    • allowed_domains (optional): List of domains to include (e.g., ["*.edu"])
    • blocked_domains (optional): List of domains to exclude

QuercleFetchTool

  • Name: fetch
  • Description: Fetch a URL and analyze its content with AI
  • Arguments:
    • url (required): The URL to fetch
    • prompt (required): Instructions for content analysis

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langchain_quercle-0.1.4.tar.gz (64.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

langchain_quercle-0.1.4-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file langchain_quercle-0.1.4.tar.gz.

File metadata

  • Download URL: langchain_quercle-0.1.4.tar.gz
  • Upload date:
  • Size: 64.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for langchain_quercle-0.1.4.tar.gz
Algorithm Hash digest
SHA256 53621cce3cb196694e1fb7ed172111dc662ce596181b846854b8308e25213698
MD5 25274605b34f0f82200496149c19f9b7
BLAKE2b-256 a802a2a6ddc06998b743688ae13f08f61e730ea67e45261dccc4b49608019c29

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_quercle-0.1.4.tar.gz:

Publisher: publish.yml on quercledev/langchain-quercle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file langchain_quercle-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_quercle-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 343df2e592289f125c6a3b3c84c6b2dbd6c4d35b99db4b47df9d0117951d5da4
MD5 d6a1d1475c0ff082351ee4126b16f849
BLAKE2b-256 7cf4e6178acf3c187dc1a29198996b25f387d665b21ab429898e93bc0bae5648

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_quercle-0.1.4-py3-none-any.whl:

Publisher: publish.yml on quercledev/langchain-quercle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page