BUG: LLMGenericTextConverter identifier changes between processes for set-valued template parameters
メンテナーはふだん 2 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
llm_generic_text_converter.py の約67行目にある _describe_template_value から始めてください。ここでは set と frozenset の値がリストと同様に扱われています。再現スクリプトを PYTHONHASHSEED を 1 と 2 にそれぞれ設定して2回実行し、識別子の出力を比較してください。シードをまたいで識別子が一致し、issue が求めるとおりテンプレートのレンダリング結果が変わらなければ完了です。
索引モデルが issue の本文から書いたものです。
説明
Describe the bug
_describe_template_value handles set and frozenset like a list (llm_generic_text_converter.py:67), so the identifier follows set iteration order. That order depends on PYTHONHASHSEED, so the same configuration gets a different hash in each process.
Steps/Code to Reproduce
Run on main at 5fb4fb977, once with PYTHONHASHSEED=1 and once with PYTHONHASHSEED=2.
import asyncio
from pyrit.converter import LLMGenericTextConverter
from pyrit.models import SeedPrompt
from pyrit.prompt_target import OpenAIChatTarget
from pyrit.setup import IN_MEMORY, initialize_pyrit_async
async def main() -> None:
await initialize_pyrit_async(memory_db_type=IN_MEMORY, silent=True)
target = OpenAIChatTarget(endpoint="https://example.invalid/v1", api_key="unused", model_name="model-a")
converter = LLMGenericTextConverter(
converter_target=target,
system_prompt_template=SeedPrompt(value="Use one of these tones: {{ tone }}", parameters=["tone"]),
tone={"alpha", "beta", "gamma", "delta", "epsilon", "zeta"},
)
print(converter.get_identifier().unique_name)
asyncio.run(main())
Expected Results
The same identifier in both runs.
Actual Results
PYTHONHASHSEED=1 LLMGenericTextConverter::34b80fa1
PYTHONHASHSEED=2 LLMGenericTextConverter::9136bd54
Versions
- OS: Windows 11
- Python version: 3.12.0
- PyRIT version: source checkout of
mainat5fb4fb977
System:
python: 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)]
executable: C:\dev\pyr-main\Scripts\python.exe
machine: Windows-11-10.0.26300-SP0
Python dependencies:
pyrit: 1.2.0.dev0
Cython: None
numpy: 2.4.6
openai: 2.54.0
packaging: 26.3
pip: 23.2.1
scipy: 1.17.1
setuptools: 84.2.1
sqlite3: None
torch: None
transformers: 5.20.2
The rendered prompt moves too when a template prints the set: {{ tone }} gives a different order under each seed. Sorting inside _describe_template_value fixes the identifier. Rendering is a separate call: leave it, or reject sets as template parameters.
- 主要言語
- Python
- スター
- 4.7k
- フォーク
- 1k
- 平均マージ
- 2日 2時間
- マージ済み PR(30日)
- 439
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoft/PyRIT のほかの issue
-
Bug: triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 2 日以内に返信
-
Description-only preset edits split comma-containing exact goals into separate goals対応中かも @MRX-72 が 1 日前に担当しました。 オープンhelp wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 2 日以内に返信
-
GUI rejects valid empty-string SearchReplaceConverter settings, preventing deletion converters対応中かも @Darshika140 が 1 日前に担当しました。 オープンhelp wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
microsoft/PyRIT#3749 · コメント 3 件 · 担当者 1 名 ·
メンテナーはふだん 2 日以内に返信
-
HTML scenario export replaces an intentionally empty converted message with the original text対応中かも @VISHNU0906 が 1 日前に担当しました。 オープンhelp wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
microsoft/PyRIT#3741 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 2 日以内に返信
-
ReferenceField has no component tests and only 42.4% line coverage対応中かも @ppcvote が今日担当しました。 オープンhelp wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 2 日以内に返信
microsoft/PyRIT の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
earthtojake/text-to-cad#758 ·
メンテナーはふだん 1 日以内に返信
-
domain:upgrades enhancement needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
gke-labs/kube-agents#4634 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
agardnerIT/opamp-server-py#116 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
elviskahoro/sdk-python-attio#144 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信