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.textUse 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")