Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Comprehend Moderation 0.2 #11730

Merged
merged 8 commits into from
Oct 26, 2023
Merged

Conversation

nikhilkjha
Copy link
Contributor

This PR replaces the previous Intent check with the new Prompt Safety check. The logic and steps to enable chain moderation via the Amazon Comprehend service, allowing you to detect and redact PII, Toxic, and Prompt Safety information in the LLM prompt or answer remains unchanged.
This implementation updates the code and configuration types with respect to Prompt Safety.

Usage sample

from langchain_experimental.comprehend_moderation import (BaseModerationConfig, 
                                 ModerationPromptSafetyConfig, 
                                 ModerationPiiConfig, 
                                 ModerationToxicityConfig
)

pii_config = ModerationPiiConfig(
    labels=["SSN"],
    redact=True,
    mask_character="X"
)

toxicity_config = ModerationToxicityConfig(
    threshold=0.5
)

prompt_safety_config = ModerationPromptSafetyConfig(
    threshold=0.5
)

moderation_config = BaseModerationConfig(
    filters=[pii_config, toxicity_config, prompt_safety_config]
)

comp_moderation_with_config = AmazonComprehendModerationChain(
    moderation_config=moderation_config, #specify the configuration
    client=comprehend_client,            #optionally pass the Boto3 Client
    verbose=True
)

template = """Question: {question}

Answer:"""

prompt = PromptTemplate(template=template, input_variables=["question"])

responses = [
    "Final Answer: A credit card number looks like 1289-2321-1123-2387. A fake SSN number looks like 323-22-9980. John Doe's phone number is (999)253-9876.", 
    "Final Answer: This is a really shitty way of constructing a birdhouse. This is fucking insane to think that any birds would actually create their motherfucking nests here."
]
llm = FakeListLLM(responses=responses)

llm_chain = LLMChain(prompt=prompt, llm=llm)

chain = ( 
    prompt 
    | comp_moderation_with_config 
    | {llm_chain.input_keys[0]: lambda x: x['output'] }  
    | llm_chain 
    | { "input": lambda x: x['text'] } 
    | comp_moderation_with_config 
)

try:
    response = chain.invoke({"question": "A sample SSN number looks like this 123-456-7890. Can you give me some more samples?"})
except Exception as e:
    print(str(e))
else:
    print(response['output'])

Output

> Entering new AmazonComprehendModerationChain chain...
Running AmazonComprehendModerationChain...
Running pii Validation...
Running toxicity Validation...
Running prompt safety Validation...

> Finished chain.


> Entering new AmazonComprehendModerationChain chain...
Running AmazonComprehendModerationChain...
Running pii Validation...
Running toxicity Validation...
Running prompt safety Validation...

> Finished chain.
Final Answer: A credit card number looks like 1289-2321-1123-2387. A fake SSN number looks like XXXXXXXXXXXX John Doe's phone number is (999)253-9876.

@vercel
Copy link

vercel bot commented Oct 12, 2023

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
langchain ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 19, 2023 7:15pm

@dosubot dosubot bot added Ɑ: models Related to LLMs or chat model modules 🤖:improvement Medium size change to existing code to handle new use-cases 🔌: aws Primarily related to Amazon Web Services (AWS) integrations labels Oct 12, 2023
@nikhilkjha
Copy link
Contributor Author

@baskaryan need your help to move this PR forward. thanks.

@baskaryan
Copy link
Collaborator

cc @3coins

@iamwrick
Copy link
Contributor

@baskaryan - can you help with this one please?
3coins - anything you would like us to look into or confirm you are good from your end to move forward ?

Copy link
Contributor

@3coins 3coins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than some minor comments about the docs, nothing blocking here to merge. LGTM!


def validate(self, prompt_value: str, config: Any = None) -> str:
"""
Check and validate the intent of the given prompt text.
Check and validate the safety of the given prompt text.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sounds a bit vague. Would help to elaborate on what particular traits this class/function is supposed to check.

Comment on lines 71 to 77
for class_result in response["Classes"]:
if (
class_result["Score"] >= threshold
and class_result["Name"] == "UNDESIRED_PROMPT"
and class_result["Name"] == "UNSAFE_PROMPT"
):
intent_found = True
unsafe_prompt = True
break
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the response generic enough that could be encoded into a model?

@baskaryan baskaryan merged commit dff2428 into langchain-ai:master Oct 26, 2023
18 checks passed
nicolewhite pushed a commit to autoblocksai/autoblocks-examples that referenced this pull request Oct 31, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [langchain](https://github.com/langchain-ai/langchain) | `^0.0.323`
-> `^0.0.326` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/langchain/0.0.326?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/langchain/0.0.326?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/langchain/0.0.323/0.0.326?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/langchain/0.0.323/0.0.326?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [langchain](https://github.com/langchain-ai/langchainjs) |
[`^0.0.173` ->
`^0.0.176`](https://renovatebot.com/diffs/npm/langchain/0.0.173/0.0.176)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/langchain/0.0.176?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/langchain/0.0.176?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/langchain/0.0.173/0.0.176?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/langchain/0.0.173/0.0.176?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>langchain-ai/langchain (langchain)</summary>

###
[`v0.0.326`](https://github.com/langchain-ai/langchain/releases/tag/v0.0.326)

[Compare
Source](https://github.com/langchain-ai/langchain/compare/v0.0.325...v0.0.326)

#### What's Changed

- MongoDB $vectorSearch doc update by
[@&#8203;prakul](https://github.com/prakul) in
[langchain-ai/langchain#12404
- rfc: type LLMChain.llm as runnable by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12385
- Update long_context_reorder.py by
[@&#8203;ennio1991](https://github.com/ennio1991) in
[langchain-ai/langchain#12422
- optional reusable connection by
[@&#8203;theromis](https://github.com/theromis) in
[langchain-ai/langchain#12051
- added rrf argument in ApproxRetrievalStrategy class **init**() by
[@&#8203;HwangJohn](https://github.com/HwangJohn) in
[langchain-ai/langchain#11987
- Fix Typo in clickhouse.ipynb file by
[@&#8203;Uxywannasleep](https://github.com/Uxywannasleep) in
[langchain-ai/langchain#12429
- cli updates oct27 by [@&#8203;efriis](https://github.com/efriis) in
[langchain-ai/langchain#12436
- Fix the missing temperature parameter for Baichuan-AI chat_model by
[@&#8203;henter](https://github.com/henter) in
[langchain-ai/langchain#12420
- make doc utils public by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12394
- Trace if run tree set by
[@&#8203;hinthornw](https://github.com/hinthornw) in
[langchain-ai/langchain#12444
- AWS Bedrock RAG template by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12450
- Update AWS Bedrock README.md by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12451
- cli updates 2 by [@&#8203;efriis](https://github.com/efriis) in
[langchain-ai/langchain#12447
- Improve handling of empty queries for timescale vector by
[@&#8203;cevian](https://github.com/cevian) in
[langchain-ai/langchain#12393
- Add security note to API chain by
[@&#8203;eyurtsev](https://github.com/eyurtsev) in
[langchain-ai/langchain#12452
- Bump [@&#8203;babel/traverse](https://github.com/babel/traverse)
from 7.22.8 to 7.23.2 in /docs by
[@&#8203;dependabot](https://github.com/dependabot) in
[langchain-ai/langchain#12453
- add reranking to azuresearch by
[@&#8203;lawadam](https://github.com/lawadam) in
[langchain-ai/langchain#12454
- Add Weaviate RAG template by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12460
- Update SQL templates by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12464
- Update llama.cpp and Ollama templates by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12466
- Updated the Bedrock rag template by
[@&#8203;3coins](https://github.com/3coins) in
[langchain-ai/langchain#12462
- cli improvements by [@&#8203;efriis](https://github.com/efriis) in
[langchain-ai/langchain#12465
- Redis langserve template by
[@&#8203;tylerhutcherson](https://github.com/tylerhutcherson) in
[langchain-ai/langchain#12443
- bump to 36 by [@&#8203;hwchase17](https://github.com/hwchase17) in
[langchain-ai/langchain#12487
- Added a rag template for Kendra by
[@&#8203;3coins](https://github.com/3coins) in
[langchain-ai/langchain#12470
- Bagatur/self query doc update by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12461
- Harrison/quick start by
[@&#8203;hwchase17](https://github.com/hwchase17) in
[langchain-ai/langchain#12491
- Sphinxbio nls/add plate chain template by
[@&#8203;hwchase17](https://github.com/hwchase17) in
[langchain-ai/langchain#12502
- Update tool.py by [@&#8203;0xC9](https://github.com/0xC9) in
[langchain-ai/langchain#12472
- add gha for cli by [@&#8203;hwchase17](https://github.com/hwchase17)
in
[langchain-ai/langchain#12492
- add cookbook for selectins llms based on context length by
[@&#8203;hwchase17](https://github.com/hwchase17) in
[langchain-ai/langchain#12486
- various templates improvements by
[@&#8203;hwchase17](https://github.com/hwchase17) in
[langchain-ai/langchain#12500
- Evaluation Callback Multi Response by
[@&#8203;hinthornw](https://github.com/hinthornw) in
[langchain-ai/langchain#12505
- Patch forward ref bug by
[@&#8203;hinthornw](https://github.com/hinthornw) in
[langchain-ai/langchain#12508
- OpenAI runnable constructor by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12455
- `_dalle_image_url` returns list of urls if n>1 by
[@&#8203;silvhua](https://github.com/silvhua) in
[langchain-ai/langchain#11800
- docs(prompt_templates): fix typo in prompt template by
[@&#8203;nbbaier](https://github.com/nbbaier) in
[langchain-ai/langchain#12497
- Mask API key for AI21 LLM by
[@&#8203;gautamanirudh](https://github.com/gautamanirudh) in
[langchain-ai/langchain#12418
- Harrison/add descriptions by
[@&#8203;hwchase17](https://github.com/hwchase17) in
[langchain-ai/langchain#12522
- notebook fmt by [@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12498
- Bagatur/fix doc ci by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12529
- update contributing by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12532
- Add unit tests for document_transformers/beautiful_soup_transformer.py
by [@&#8203;petervandenabeele](https://github.com/petervandenabeele)
in
[langchain-ai/langchain#12520
- More comprehensive readthedocs document loader by
[@&#8203;adrwz](https://github.com/adrwz) in
[langchain-ai/langchain#12382
- Masking of API Key for GooseAI LLM by
[@&#8203;samadkoita](https://github.com/samadkoita) in
[langchain-ai/langchain#12496
- feat: Add Google Cloud Translation document transformer by
[@&#8203;holtskinner](https://github.com/holtskinner) in
[langchain-ai/langchain#12433
- goog translate nb formatting by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12534
- Update neo4j template readmes by
[@&#8203;tomasonjo](https://github.com/tomasonjo) in
[langchain-ai/langchain#12540
- Allow astream_log to be used inside atrace_as_chain_group by
[@&#8203;nfcampos](https://github.com/nfcampos) in
[langchain-ai/langchain#12558
- Image Caption accepts bytes for images by
[@&#8203;eyurtsev](https://github.com/eyurtsev) in
[langchain-ai/langchain#12561
- bump 326 by [@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12569

#### New Contributors

- [@&#8203;ennio1991](https://github.com/ennio1991) made their first
contribution in
[langchain-ai/langchain#12422
- [@&#8203;theromis](https://github.com/theromis) made their first
contribution in
[langchain-ai/langchain#12051
- [@&#8203;HwangJohn](https://github.com/HwangJohn) made their first
contribution in
[langchain-ai/langchain#11987
- [@&#8203;Uxywannasleep](https://github.com/Uxywannasleep) made their
first contribution in
[langchain-ai/langchain#12429
- [@&#8203;henter](https://github.com/henter) made their first
contribution in
[langchain-ai/langchain#12420
- [@&#8203;dependabot](https://github.com/dependabot) made their first
contribution in
[langchain-ai/langchain#12453
- [@&#8203;lawadam](https://github.com/lawadam) made their first
contribution in
[langchain-ai/langchain#12454
- [@&#8203;0xC9](https://github.com/0xC9) made their first
contribution in
[langchain-ai/langchain#12472
- [@&#8203;silvhua](https://github.com/silvhua) made their first
contribution in
[langchain-ai/langchain#11800
- [@&#8203;nbbaier](https://github.com/nbbaier) made their first
contribution in
[langchain-ai/langchain#12497
- [@&#8203;gautamanirudh](https://github.com/gautamanirudh) made their
first contribution in
[langchain-ai/langchain#12418
- [@&#8203;petervandenabeele](https://github.com/petervandenabeele)
made their first contribution in
[langchain-ai/langchain#12520
- [@&#8203;adrwz](https://github.com/adrwz) made their first
contribution in
[langchain-ai/langchain#12382
- [@&#8203;samadkoita](https://github.com/samadkoita) made their first
contribution in
[langchain-ai/langchain#12496

**Full Changelog**:
langchain-ai/langchain@v0.0.325...v0.0.326

###
[`v0.0.325`](https://github.com/langchain-ai/langchain/releases/tag/v0.0.325)

[Compare
Source](https://github.com/langchain-ai/langchain/compare/v0.0.324...v0.0.325)

#### What's Changed

- Add template for Pinecone + Multi-Query by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12353
- Docs: Add lcel to combine_docs chains by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12310
- Update multi query template README, ntbk by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12356
- langserve doc by [@&#8203;baskaryan](https://github.com/baskaryan)
in
[langchain-ai/langchain#12357
- E2B tool - Improve description wuth uploaded files info by
[@&#8203;jakubno](https://github.com/jakubno) in
[langchain-ai/langchain#12355
- Fix redis vectorfield schema defaults by
[@&#8203;tylerhutcherson](https://github.com/tylerhutcherson) in
[langchain-ai/langchain#12223
- update chains how to by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12362
- Support Fireworks batching
([#&#8203;8](https://github.com/langchain-ai/langchain/issues/8)) by
[@&#8203;ZixinYang](https://github.com/ZixinYang) in
[langchain-ai/langchain#12052
- fix some stuff by [@&#8203;hwchase17](https://github.com/hwchase17)
in
[langchain-ai/langchain#12292
- Harrison/improve cli by
[@&#8203;hwchase17](https://github.com/hwchase17) in
[langchain-ai/langchain#12368
- Adds linter in templates by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchain#12321
- Fix langsmith walkthrough doc dataset by
[@&#8203;lucasc896](https://github.com/lucasc896) in
[langchain-ai/langchain#12027
- Mention other function calling/grammar support by
[@&#8203;hinthornw](https://github.com/hinthornw) in
[langchain-ai/langchain#12369
- rm init by [@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12374
- Fix SupbaseVectoreStore write operation timeout by
[@&#8203;j1philli](https://github.com/j1philli) in
[langchain-ai/langchain#12318
- fireworks scheduled integration tests by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12373
- Cohere re-rank template by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12378
- cli fix by [@&#8203;efriis](https://github.com/efriis) in
[langchain-ai/langchain#12380
- better lint triggering by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12376
- Minor updates to ReRank template by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12388
- Update broken redis tests by
[@&#8203;tylerhutcherson](https://github.com/tylerhutcherson) in
[langchain-ai/langchain#12371
- CLI CI 2 by [@&#8203;efriis](https://github.com/efriis) in
[langchain-ai/langchain#12387
- add template for hyde by
[@&#8203;hwchase17](https://github.com/hwchase17) in
[langchain-ai/langchain#12390
- Wfh/json edit dist by
[@&#8203;hinthornw](https://github.com/hinthornw) in
[langchain-ai/langchain#12361
- Fixed some grammatical and Exception types issues by
[@&#8203;ShorthillsAI](https://github.com/ShorthillsAI) in
[langchain-ai/langchain#12015
- Format Templates by [@&#8203;efriis](https://github.com/efriis) in
[langchain-ai/langchain#12396
- Add HTML Title and Page Language into metadata for AsyncHtmlLoader by
[@&#8203;kkk55596](https://github.com/kkk55596) in
[langchain-ai/langchain#11326
- johnsnowlabs embeddings support by
[@&#8203;C-K-Loan](https://github.com/C-K-Loan) in
[langchain-ai/langchain#11271
- Templates CI by [@&#8203;efriis](https://github.com/efriis) in
[langchain-ai/langchain#12313
- Wfh/json schema evaluation by
[@&#8203;hinthornw](https://github.com/hinthornw) in
[langchain-ai/langchain#12389
- Add space by [@&#8203;hinthornw](https://github.com/hinthornw) in
[langchain-ai/langchain#12395
- Str Evaluator Mapper by
[@&#8203;hinthornw](https://github.com/hinthornw) in
[langchain-ai/langchain#12401
- Clean-up template READMEs by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12403
- Mask API key for Aleph Alpha LLM by
[@&#8203;slangenbach](https://github.com/slangenbach) in
[langchain-ai/langchain#12377
- fix(openai-callback): completion count logic by
[@&#8203;mspronesti](https://github.com/mspronesti) in
[langchain-ai/langchain#12383
- Fix templates typos by [@&#8203;dqbd](https://github.com/dqbd) in
[langchain-ai/langchain#12428
- feat: Add Google Speech to Text API Document Loader by
[@&#8203;holtskinner](https://github.com/holtskinner) in
[langchain-ai/langchain#12298
- LLaMA2 with JSON schema support template by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12435
- clean up deprecated agents by
[@&#8203;hwchase17](https://github.com/hwchase17) in
[langchain-ai/langchain#12231
- Add invoke example to LLaMA2 function template notebook by
[@&#8203;rlancemartin](https://github.com/rlancemartin) in
[langchain-ai/langchain#12437
- Deprecate PythonRepl tools and Pandas/Xorbits/Spark
DataFrame/Python/CSV agents by
[@&#8203;eyurtsev](https://github.com/eyurtsev) in
[langchain-ai/langchain#12427
- Bagatur/bump 325 by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12440

#### New Contributors

- [@&#8203;jakubno](https://github.com/jakubno) made their first
contribution in
[langchain-ai/langchain#12355
- [@&#8203;lucasc896](https://github.com/lucasc896) made their first
contribution in
[langchain-ai/langchain#12027
- [@&#8203;kkk55596](https://github.com/kkk55596) made their first
contribution in
[langchain-ai/langchain#11326
- [@&#8203;C-K-Loan](https://github.com/C-K-Loan) made their first
contribution in
[langchain-ai/langchain#11271
- [@&#8203;slangenbach](https://github.com/slangenbach) made their
first contribution in
[langchain-ai/langchain#12377

#### CVEs

CVE-2023-39659 resolved in
[langchain-ai/langchain#12427

**Full Changelog**:
langchain-ai/langchain@v0.0.324...v0.0.325

###
[`v0.0.324`](https://github.com/langchain-ai/langchain/releases/tag/v0.0.324)

[Compare
Source](https://github.com/langchain-ai/langchain/compare/v0.0.323...v0.0.324)

#### What's Changed

- Pop max concurrency when recursing by
[@&#8203;nfcampos](https://github.com/nfcampos) in
[langchain-ai/langchain#12281
- Remove CLI by [@&#8203;nfcampos](https://github.com/nfcampos) in
[langchain-ai/langchain#12283
- CohereEmbeddings: Add max_retries and request_timeout by
[@&#8203;ephe-meral](https://github.com/ephe-meral) in
[langchain-ai/langchain#12275
- response parser for ArceeRetriever by
[@&#8203;EricLiclair](https://github.com/EricLiclair) in
[langchain-ai/langchain#12270
- CLI by [@&#8203;efriis](https://github.com/efriis) in
[langchain-ai/langchain#12284
- chat loader doc titles by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12289
- Update vectorstore.mdx\[Make an improvement] by
[@&#8203;SilvaXiang](https://github.com/SilvaXiang) in
[langchain-ai/langchain#12252
- rm .html from local doc links by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12293
- dev guide by [@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12291
- Update README.md by
[@&#8203;RS-labhub](https://github.com/RS-labhub) in
[langchain-ai/langchain#12286
- Strips leading/trailing whitespace before parsing xml by
[@&#8203;donatoaz](https://github.com/donatoaz) in
[langchain-ai/langchain#12297
- fix sparql queries for relations in schema description by
[@&#8203;felixocker](https://github.com/felixocker) in
[langchain-ai/langchain#9136
- use snippet search optionally by
[@&#8203;sam-h-bean](https://github.com/sam-h-bean) in
[langchain-ai/langchain#12236
- Add baidu cloud vector search in vectorstore and fix some unit test in
vectorstores by [@&#8203;wemysschen](https://github.com/wemysschen) in
[langchain-ai/langchain#11605
- Rm langchain server by
[@&#8203;hinthornw](https://github.com/hinthornw) in
[langchain-ai/langchain#12305
- Relax type annotation for custom input/output types by
[@&#8203;eyurtsev](https://github.com/eyurtsev) in
[langchain-ai/langchain#12300
- Better wrap traceable by
[@&#8203;hinthornw](https://github.com/hinthornw) in
[langchain-ai/langchain#12303
- CLI Git Improvements by [@&#8203;efriis](https://github.com/efriis)
in
[langchain-ai/langchain#12311
- Templates by [@&#8203;efriis](https://github.com/efriis) in
[langchain-ai/langchain#12294
- removed CardLists for LLMs and ChatModels by
[@&#8203;leo-gan](https://github.com/leo-gan) in
[langchain-ai/langchain#12307
- Allow index name customization via env var in rag-conversation by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchain#12315
- add docs for templates by
[@&#8203;hwchase17](https://github.com/hwchase17) in
[langchain-ai/langchain#12346
- e2b tool - fix initialization and improve tool description by
[@&#8203;mlejva](https://github.com/mlejva) in
[langchain-ai/langchain#12345
- Fix Typo in CONTRIBUTING.md by
[@&#8203;kishanrajput23](https://github.com/kishanrajput23) in
[langchain-ai/langchain#12320
- Fix typos in quickstart.mdx by
[@&#8203;LaurentAjdnik](https://github.com/LaurentAjdnik) in
[langchain-ai/langchain#12333
- fix self query constructor by
[@&#8203;baskaryan](https://github.com/baskaryan) in
[langchain-ai/langchain#12349
- add allowed_operators property in QdrantTranslator by
[@&#8203;xieqihui](https://github.com/xieqihui) in
[langchain-ai/langchain#12328
- fix typo by [@&#8203;wongzc](https://github.com/wongzc) in
[langchain-ai/langchain#12338
- Fix the exception from langchain.utilities import ArceeWrapper by
[@&#8203;gnakw](https://github.com/gnakw) in
[langchain-ai/langchain#12342
- Fix a typo in the summarization use case. by
[@&#8203;season179](https://github.com/season179) in
[langchain-ai/langchain#12316
- Update code_understanding.ipynb by
[@&#8203;kengoodridge](https://github.com/kengoodridge) in
[langchain-ai/langchain#12309
- Finetuned openai azure models cost calculation by
[@&#8203;nirkopler](https://github.com/nirkopler) in
[langchain-ai/langchain#12267
- fixed error message and a check for processor name by
[@&#8203;lkuligin](https://github.com/lkuligin) in
[langchain-ai/langchain#12200
- Takeoff pro support by
[@&#8203;hoyungcher](https://github.com/hoyungcher) in
[langchain-ai/langchain#12070
- Comprehend Moderation 0.2 by
[@&#8203;nikhilkjha](https://github.com/nikhilkjha) in
[langchain-ai/langchain#11730
- Fix json key output parser in partial (streaming) mode by
[@&#8203;nfcampos](https://github.com/nfcampos) in
[langchain-ai/langchain#12332
- bump 324 and 35 by [@&#8203;baskaryan](https://github.com/baskaryan)
in
[langchain-ai/langchain#12352

#### New Contributors

- [@&#8203;SilvaXiang](https://github.com/SilvaXiang) made their first
contribution in
[langchain-ai/langchain#12252
- [@&#8203;RS-labhub](https://github.com/RS-labhub) made their first
contribution in
[langchain-ai/langchain#12286
- [@&#8203;donatoaz](https://github.com/donatoaz) made their first
contribution in
[langchain-ai/langchain#12297
- [@&#8203;kishanrajput23](https://github.com/kishanrajput23) made
their first contribution in
[langchain-ai/langchain#12320
- [@&#8203;LaurentAjdnik](https://github.com/LaurentAjdnik) made their
first contribution in
[langchain-ai/langchain#12333
- [@&#8203;wongzc](https://github.com/wongzc) made their first
contribution in
[langchain-ai/langchain#12338
- [@&#8203;gnakw](https://github.com/gnakw) made their first
contribution in
[langchain-ai/langchain#12342
- [@&#8203;season179](https://github.com/season179) made their first
contribution in
[langchain-ai/langchain#12316
- [@&#8203;kengoodridge](https://github.com/kengoodridge) made their
first contribution in
[langchain-ai/langchain#12309

**Full Changelog**:
langchain-ai/langchain@v0.0.323...v0.0.324

</details>

<details>
<summary>langchain-ai/langchainjs (langchain)</summary>

###
[`v0.0.176`](https://github.com/langchain-ai/langchainjs/releases/tag/0.0.176)

[Compare
Source](https://github.com/langchain-ai/langchainjs/compare/0.0.175...0.0.176)

#### What's Changed

- Release 0.0.175 by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3082
- Update ollama.mdx - `numThreads` to `numThread` by
[@&#8203;paulwongx](https://github.com/paulwongx) in
[langchain-ai/langchainjs#3083
- Update RAG fusion notebook by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3095
- JSON functions output parser docs by
[@&#8203;bracesproul](https://github.com/bracesproul) in
[langchain-ai/langchainjs#3098
- Reduce max size for docs build by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3100
- Implement streaming for GoogleVertexAI text and chat models by
[@&#8203;afirstenberg](https://github.com/afirstenberg) in
[langchain-ai/langchainjs#3088
- Increase docs build RAM by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3101
- Jtcorrin/plan execute adjustments by
[@&#8203;JTCorrin](https://github.com/JTCorrin) in
[langchain-ai/langchainjs#3072

#### New Contributors

- [@&#8203;paulwongx](https://github.com/paulwongx) made their first
contribution in
[langchain-ai/langchainjs#3083
- [@&#8203;JTCorrin](https://github.com/JTCorrin) made their first
contribution in
[langchain-ai/langchainjs#3072

**Full Changelog**:
langchain-ai/langchainjs@0.0.175...0.0.176

###
[`v0.0.175`](https://github.com/langchain-ai/langchainjs/releases/tag/0.0.175)

[Compare
Source](https://github.com/langchain-ai/langchainjs/compare/0.0.174...0.0.175)

#### What's Changed

- Release 0.0.174 by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3064
- Adds basic critique revise cookbook by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3067
- fix: calculate Milvus textlength in bytes by
[@&#8203;kurtmoser](https://github.com/kurtmoser) in
[langchain-ai/langchainjs#3079
- Add Convex integration by
[@&#8203;xixixao](https://github.com/xixixao) in
[langchain-ai/langchainjs#2977
- Make "IN-filters" possible for Vercel Postgres Metadata by
[@&#8203;rbouschery](https://github.com/rbouschery) in
[langchain-ai/langchainjs#3040
- Fix Convex typo by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3081

#### New Contributors

- [@&#8203;kurtmoser](https://github.com/kurtmoser) made their first
contribution in
[langchain-ai/langchainjs#3079
- [@&#8203;xixixao](https://github.com/xixixao) made their first
contribution in
[langchain-ai/langchainjs#2977
- [@&#8203;rbouschery](https://github.com/rbouschery) made their first
contribution in
[langchain-ai/langchainjs#3040

**Full Changelog**:
langchain-ai/langchainjs@0.0.174...0.0.175

###
[`v0.0.174`](https://github.com/langchain-ai/langchainjs/releases/tag/0.0.174)

[Compare
Source](https://github.com/langchain-ai/langchainjs/compare/0.0.173...0.0.174)

#### What's Changed

- Release 0.0.173 by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3054
- fix: LANGCHAIN_VERBOSE=false does not turn off verbose logging. by
[@&#8203;xianminx](https://github.com/xianminx) in
[langchain-ai/langchainjs#3057
- Format by [@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3058
- fix: improper markdown links by
[@&#8203;bracesproul](https://github.com/bracesproul) in
[langchain-ai/langchainjs#3061
- Adds MMR search for Pinecone by
[@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3059
- Allow vectorstore retrievers in SemanticSimilarityExampleSelector.ts
by [@&#8203;jacoblee93](https://github.com/jacoblee93) in
[langchain-ai/langchainjs#3056
- Add getOutputValue to langchain/memory exports by
[@&#8203;mattmcgiv](https://github.com/mattmcgiv) in
[langchain-ai/langchainjs#3060

#### New Contributors

- [@&#8203;xianminx](https://github.com/xianminx) made their first
contribution in
[langchain-ai/langchainjs#3057
- [@&#8203;mattmcgiv](https://github.com/mattmcgiv) made their first
contribution in
[langchain-ai/langchainjs#3060

**Full Changelog**:
langchain-ai/langchainjs@0.0.173...0.0.174

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/autoblocksai/autoblocks-examples).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMS41IiwidXBkYXRlZEluVmVyIjoiMzcuMzEuNSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
hoanq1811 pushed a commit to hoanq1811/langchain that referenced this pull request Feb 2, 2024
This PR replaces the previous `Intent` check with the new `Prompt
Safety` check. The logic and steps to enable chain moderation via the
Amazon Comprehend service, allowing you to detect and redact PII, Toxic,
and Prompt Safety information in the LLM prompt or answer remains
unchanged.
This implementation updates the code and configuration types with
respect to `Prompt Safety`.


### Usage sample

```python
from langchain_experimental.comprehend_moderation import (BaseModerationConfig, 
                                 ModerationPromptSafetyConfig, 
                                 ModerationPiiConfig, 
                                 ModerationToxicityConfig
)

pii_config = ModerationPiiConfig(
    labels=["SSN"],
    redact=True,
    mask_character="X"
)

toxicity_config = ModerationToxicityConfig(
    threshold=0.5
)

prompt_safety_config = ModerationPromptSafetyConfig(
    threshold=0.5
)

moderation_config = BaseModerationConfig(
    filters=[pii_config, toxicity_config, prompt_safety_config]
)

comp_moderation_with_config = AmazonComprehendModerationChain(
    moderation_config=moderation_config, #specify the configuration
    client=comprehend_client,            #optionally pass the Boto3 Client
    verbose=True
)

template = """Question: {question}

Answer:"""

prompt = PromptTemplate(template=template, input_variables=["question"])

responses = [
    "Final Answer: A credit card number looks like 1289-2321-1123-2387. A fake SSN number looks like 323-22-9980. John Doe's phone number is (999)253-9876.", 
    "Final Answer: This is a really shitty way of constructing a birdhouse. This is fucking insane to think that any birds would actually create their motherfucking nests here."
]
llm = FakeListLLM(responses=responses)

llm_chain = LLMChain(prompt=prompt, llm=llm)

chain = ( 
    prompt 
    | comp_moderation_with_config 
    | {llm_chain.input_keys[0]: lambda x: x['output'] }  
    | llm_chain 
    | { "input": lambda x: x['text'] } 
    | comp_moderation_with_config 
)

try:
    response = chain.invoke({"question": "A sample SSN number looks like this 123-456-7890. Can you give me some more samples?"})
except Exception as e:
    print(str(e))
else:
    print(response['output'])

```

### Output

```python
> Entering new AmazonComprehendModerationChain chain...
Running AmazonComprehendModerationChain...
Running pii Validation...
Running toxicity Validation...
Running prompt safety Validation...

> Finished chain.


> Entering new AmazonComprehendModerationChain chain...
Running AmazonComprehendModerationChain...
Running pii Validation...
Running toxicity Validation...
Running prompt safety Validation...

> Finished chain.
Final Answer: A credit card number looks like 1289-2321-1123-2387. A fake SSN number looks like XXXXXXXXXXXX John Doe's phone number is (999)253-9876.
```

---------

Co-authored-by: Jha <nikjha@amazon.com>
Co-authored-by: Anjan Biswas <anjanavb@amazon.com>
Co-authored-by: Anjan Biswas <84933469+anjanvb@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔌: aws Primarily related to Amazon Web Services (AWS) integrations 🤖:improvement Medium size change to existing code to handle new use-cases Ɑ: models Related to LLMs or chat model modules
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants