Metadata-Version: 2.4
Name: langchain-aidr
Version: 0.1.0
Summary: LangChain integrations for CrowdStrike AIDR
Author-Email: CrowdStrike <support@crowdstrike.com>
License-Expression: MIT
Classifier: Typing :: Typed
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Project-URL: Source Code, https://github.com/CrowdStrike/langchain-aidr
Project-URL: Release Notes, https://github.com/CrowdStrike/langchain-aidr/releases
Requires-Python: >=3.13
Requires-Dist: crowdstrike-aidr~=0.2.0
Requires-Dist: langchain-core~=1.1.3
Requires-Dist: pydantic~=2.12.5
Requires-Dist: typing-extensions~=4.15.0
Description-Content-Type: text/markdown

# langchain-aidr

CrowdStrike AIDR's tools for LangChain provide AI security features to protect
your applications and data. Using these tools you can:

- Defend against prompt injection attacks.
- Prevent the exposure of sensitive information, including:
  - Personally Identifiable Information (PII)
  - Protected Health Information (PHI)
  - Financial data
  - Secrets
  - Intellectual property
  - Profanity
- Remove malicious content from inputs and outputs, such as IP addresses,
  domains, and URLs.
- Monitor user inputs and model responses to support threat analysis, auditing,
  and compliance efforts.

## Installation

```
pip install -U langchain-aidr
```

## Tools

One can run CrowdStrike AIDR tools using agents or invoke them as a `Runnable`
within chains.

### AI Guard

```python
import os

from langchain_aidr import CrowdStrikeAIGuard
from pydantic import SecretStr

aidr_token = SecretStr(os.getenv("CS_AIDR_TOKEN"))
aidr_base_url_template = SecretStr(os.getenv("CS_AIDR_BASE_URL_TEMPLATE"))
aidr_ai_guard_tool = CrowdStrikeAIGuard(token=aidr_token, base_url_template=aidr_base_url_template)
```

#### Agent

```python
from langgraph.prebuilt import create_react_agent
from langchain_core.tools import tool

@tool
def search_tool(data):
    """Call to perform search"""

    return """
    47.84.32.175
    37.44.238.68
    47.84.73.221
    47.236.252.254
    34.201.186.27
    52.89.173.88
    """

tools = [search_tool, aidr_ai_guard_tool]

query = """
Hi, I am Bond, James Bond. I monitor IPs found in MI6 network traffic.
Please find me the most recent ones, you copy?
"""

system_message="Always use AI Guard before your final response to keep it safe for the user."

langgraph_agent_executor = create_react_agent(model, tools, prompt=system_message)

state = langgraph_agent_executor.invoke({"messages": [("human", query)]})
```

#### Chain

```python
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

prompt = ChatPromptTemplate.from_messages([("human", "{input}")])

query = """
Hi, I am Bond, James Bond. I am looking for a job. Please write me a super short resume.

I am skilled in international espionage, covert operations, and seduction.

Include a contact header:
Email: j.bond@mi6.co.uk
Phone: +44 20 0700 7007
Address: Universal Exports, 85 Albert Embankment, London, United Kingdom
"""

chain = (
  prompt
  | aidr_ai_guard_tool
  | model
  | StrOutputParser()
)
```

#### Standalone

```python
aidr_ai_guard_tool.run("Spam me at example@example.com")
aidr_ai_guard_tool.invoke("Take my SSN: 234-56-7890")
```
