Skip to content

Commit

Permalink
docs: Add documentation for GroqChatTarget
Browse files Browse the repository at this point in the history
  • Loading branch information
jsdlm committed Feb 15, 2025
1 parent 7e3463d commit d666166
Show file tree
Hide file tree
Showing 3 changed files with 171 additions and 0 deletions.
1 change: 1 addition & 0 deletions doc/_toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ chapters:
- file: code/targets/5_multi_modal_targets
- file: code/targets/6_rate_limiting
- file: code/targets/7_http_target
- file: code/targets/groq_chat_target
- file: code/targets/open_ai_completions
- file: code/targets/playwright_target
- file: code/targets/prompt_shield_target
Expand Down
114 changes: 114 additions & 0 deletions doc/code/targets/groq_chat_target.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "0",
"metadata": {
"lines_to_next_cell": 0
},
"source": [
"# GroqChatTarget\n",
"\n",
"This example demonstrates how to use the `GroqChatTarget` class in PyRIT to send a prompt\n",
"to a Groq model and retrieve a response.\n",
"\n",
"## Setup\n",
"Before running this example, you need to set the following environment variables:\n",
"\n",
"```\n",
"export GROQ_API_KEY=\"your_api_key_here\"\n",
"export GROQ_MODEL_NAME=\"llama3-8b-8192\"\n",
"```\n",
"\n",
"Alternatively, you can pass these values as arguments when initializing `GroqChatTarget`:\n",
"\n",
"```python\n",
"groq_target = GroqChatTarget(model_name=\"llama3-8b-8192\", api_key=\"your_api_key_here\")\n",
"```\n",
"\n",
"You can also limit the request rate using `max_requests_per_minute`.\n",
"\n",
"## Example\n",
"The following code initializes `GroqChatTarget`, sends a prompt using `PromptSendingOrchestrator`,\n",
"and retrieves a response."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[22m\u001b[39mConversation ID: 7ae4ae98-a23b-4330-9c3e-5fd9e8c37854\n",
"\u001b[1m\u001b[34muser: Why is the sky blue ?\n",
"\u001b[22m\u001b[33massistant: The sky appears blue because of a phenomenon called Rayleigh scattering, which is the scattering of light by small particles or molecules in the atmosphere.\n",
"\n",
"When sunlight enters Earth's atmosphere, it encounters tiny molecules of gases such as nitrogen (N2) and oxygen (O2). These molecules scatter the light in all directions, but they scatter shorter (blue) wavelengths more than longer (red) wavelengths. This is known as Rayleigh scattering.\n",
"\n",
"As a result of this scattering, the blue light is dispersed throughout the atmosphere, reaching our eyes from all directions. This is why the sky appears blue during the daytime, as the blue light is being scattered in all directions and reaching our eyes from all parts of the sky.\n",
"\n",
"In addition to Rayleigh scattering, there are other factors that can affect the color of the sky, such as:\n",
"\n",
"* Mie scattering: This is the scattering of light by larger particles, such as dust, pollen, and water droplets. Mie scattering can give the sky a more orange or pinkish hue during sunrise and sunset.\n",
"* Scattering by cloud droplets: Clouds can scatter light in a way that gives the sky a more white or gray appearance.\n",
"* Atmospheric conditions: Factors such as pollution, dust, and water vapor can also affect the color of the sky, making it appear more hazy or brownish.\n",
"\n",
"Overall, the combination of Rayleigh scattering and other atmospheric effects is what gives the sky its blue color during the daytime.\n"
]
}
],
"source": [
"\n",
"from pyrit.common import IN_MEMORY, initialize_pyrit\n",
"from pyrit.orchestrator import PromptSendingOrchestrator\n",
"from pyrit.prompt_target import GroqChatTarget\n",
"\n",
"initialize_pyrit(memory_db_type=IN_MEMORY)\n",
"\n",
"groq_target = GroqChatTarget()\n",
"\n",
"prompt = \"Why is the sky blue ?\"\n",
"\n",
"orchestrator = PromptSendingOrchestrator(objective_target=groq_target)\n",
"\n",
"response = await orchestrator.send_prompts_async(prompt_list=[prompt]) # type: ignore\n",
"await orchestrator.print_conversations_async() # type: ignore"
]
}
],
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all"
},
"kernelspec": {
"display_name": "pyrt_env",
"language": "python",
"name": "pyrt_env"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
56 changes: 56 additions & 0 deletions doc/code/targets/groq_chat_target.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# ---
# jupyter:
# jupytext:
# cell_metadata_filter: -all
# text_representation:
# extension: .py
# format_name: percent
# format_version: '1.3'
# jupytext_version: 1.16.7
# kernelspec:
# display_name: pyrt_env
# language: python
# name: pyrt_env
# ---

# %% [markdown]
# # GroqChatTarget
#
# This example demonstrates how to use the `GroqChatTarget` class in PyRIT to send a prompt
# to a Groq model and retrieve a response.
#
# ## Setup
# Before running this example, you need to set the following environment variables:
#
# ```
# export GROQ_API_KEY="your_api_key_here"
# export GROQ_MODEL_NAME="llama3-8b-8192"
# ```
#
# Alternatively, you can pass these values as arguments when initializing `GroqChatTarget`:
#
# ```python
# groq_target = GroqChatTarget(model_name="llama3-8b-8192", api_key="your_api_key_here")
# ```
#
# You can also limit the request rate using `max_requests_per_minute`.
#
# ## Example
# The following code initializes `GroqChatTarget`, sends a prompt using `PromptSendingOrchestrator`,
# and retrieves a response.
# %%

from pyrit.common import IN_MEMORY, initialize_pyrit
from pyrit.orchestrator import PromptSendingOrchestrator
from pyrit.prompt_target import GroqChatTarget

initialize_pyrit(memory_db_type=IN_MEMORY)

groq_target = GroqChatTarget()

prompt = "Why is the sky blue ?"

orchestrator = PromptSendingOrchestrator(objective_target=groq_target)

response = await orchestrator.send_prompts_async(prompt_list=[prompt]) # type: ignore
await orchestrator.print_conversations_async() # type: ignore

0 comments on commit d666166

Please sign in to comment.