QANATIX
Integrations

LangChain

Use QANATIX as a LangChain tool.

LangChain Integration

Wrap QANATIX as a LangChain tool for use in agents and chains.

Define the tool

import httpx
from langchain_core.tools import tool

QANATIX_URL = "https://api.qanatix.com/api/v1"
QANATIX_KEY = "sk_live_abc123..."

@tool
def qanatix_search(vertical: str, query: str, limit: int = 5) -> str:
    """Search verified enterprise data from QANATIX.
    Returns ranked results from the user's private database.

    Args:
        vertical: Data vertical to search (e.g. 'manufacturing', 'pharma')
        query: Natural language search query
        limit: Maximum results to return
    """
    resp = httpx.post(
        f"{QANATIX_URL}/search/{vertical}",
        headers={"Authorization": f"Bearer {QANATIX_KEY}"},
        json={"query": query, "limit": limit, "format": "compact"},
    )
    return resp.text

Use in an agent

from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate

llm = ChatOpenAI(model="gpt-4o")
tools = [qanatix_search]

prompt = ChatPromptTemplate.from_messages([
    ("system", "You help users find enterprise data. Use qanatix_search for data queries."),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}"),
])

agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools)

result = executor.invoke({"input": "Find stainless M8 bolts under EUR 0.10"})
print(result["output"])

As a retriever

For RAG pipelines, wrap QANATIX as a LangChain retriever:

from langchain_core.retrievers import BaseRetriever
from langchain_core.documents import Document

class QanatixRetriever(BaseRetriever):
    vertical: str
    api_key: str
    base_url: str = "https://api.qanatix.com/api/v1"

    def _get_relevant_documents(self, query: str) -> list[Document]:
        resp = httpx.post(
            f"{self.base_url}/search/{self.vertical}",
            headers={"Authorization": f"Bearer {self.api_key}"},
            json={"query": query, "limit": 5},
        )
        data = resp.json()
        return [
            Document(
                page_content=r["name"],
                metadata=r.get("vertical_data", {}),
            )
            for r in data.get("results", [])
        ]

retriever = QanatixRetriever(vertical="manufacturing", api_key="sk_live_...")
docs = retriever.invoke("M8 bolt stainless")

On this page