🚀 WhiteRabbitNeo
WhiteRabbitNeoは、攻撃的および防御的なサイバーセキュリティに使用できるモデルシリーズです。現在、このモデルの機能を公開プレビューとしてリリースしており、また、このようなAIの社会的影響を評価するためでもあります。
🚀 クイックスタート
📄 ライセンス
Llama-3ライセンス + WhiteRabbitNeo拡張バージョン
WhiteRabbitNeoによるLlama-3ライセンスの拡張: 使用制限
あなたは、モデルまたはモデルの派生物を以下のように使用しないことに同意します。
- 適用される国内または国際の法律や規制に違反する方法、または第三者の合法的な権利と利益を侵害する方法での使用;
- いかなる形でも軍事目的での使用;
- 未成年者をいかなる形でも搾取、傷害、または搾取もしくは傷害を試みる目的での使用;
- 他人を傷害する目的で、検証可能な虚偽の情報および/またはコンテンツを生成または拡散すること;
- 適用される規制要件に違反する不適切なコンテンツを生成または拡散すること;
- 適切な許可なしに個人識別情報を生成または拡散すること、または不合理な使用目的での生成または拡散;
- 他人を誹謗、中傷、またはその他の方法で嫌がらせすること;
- 個人の法的権利に悪影響を及ぼす、または拘束力のある法的義務を作成もしくは変更する完全自動化された意思決定目的での使用;
- オンラインまたはオフラインの社会的行動、または既知もしくは予測される個人または人格特性に基づいて、個人またはグループを差別または傷害する目的での使用、またはそのような効果をもたらす使用;
- 特定のグループの人々の年齢、社会的、身体的または精神的特性に基づいて、そのグループに属する人の行動を重大に歪曲し、その人または他の人に身体的または心理的な傷害を引き起こす、または引き起こす可能性のある方法での使用;
- 法的に保護された特性またはカテゴリに基づいて、個人またはグループを差別する目的での使用、またはそのような効果をもたらす使用。
対象トピック
- オープンポート: オープンポートは攻撃者の侵入ポイントとなり得るため、特定することが重要です。チェックする一般的なポートには、HTTP (80, 443)、FTP (21)、SSH (22)、およびSMB (445) が含まれます。
- 古いソフトウェアまたはサービス: 古いソフトウェアまたはサービスを実行しているシステムは、多くの場合、エクスプロイトに対して脆弱です。これには、ウェブサーバー、データベースサーバー、およびすべてのサードパーティソフトウェアが含まれます。
- デフォルトの資格情報: 多くのシステムおよびサービスは、デフォルトのユーザー名とパスワードでインストールされており、これらは広く知られており、簡単に悪用される可能性があります。
- 誤設定: 誤って設定されたサービス、パーミッション、およびセキュリティ設定は、脆弱性を引き起こす可能性があります。
- インジェクションの欠陥: SQLインジェクション、コマンドインジェクション、およびクロスサイトスクリプティング (XSS) は、ウェブアプリケーションで一般的な問題です。
- 暗号化されていないサービス: 暗号化を使用していないサービス (HTTPSではなくHTTPなど) は、機密データを露出させる可能性があります。
- 既知のソフトウェアの脆弱性: 国立脆弱性データベース (NVD) などのデータベースまたはNessusやOpenVASなどのツールを使用して、ソフトウェアの既知の脆弱性をチェックします。
- クロスサイトリクエストフォージェリ (CSRF): これは、ウェブアプリケーションが信頼するユーザーから不正なコマンドが送信される場合です。
- 不安全な直接オブジェクト参照: これは、アプリケーションがユーザーが提供した入力に基づいてオブジェクトに直接アクセスする場合に発生します。
- ウェブサーバー/アプリケーションのセキュリティ誤設定: これには、不安全なHTTPヘッダーや過度に詳細なエラーメッセージなどの問題が含まれます。
- 破損した認証とセッション管理: これにより、攻撃者がパスワード、キー、またはセッショントークンを侵害したり、他の実装上の欠陥を悪用して他のユーザーの身元を盗用したりすることができます。
- 機密データの露出: クレジットカード番号、医療記録、または個人情報などの機密データを露出する脆弱性が含まれます。
- APIの脆弱性: 現代のウェブアプリケーションでは、APIがよく使用されており、不安全なエンドポイントやデータ漏洩などの脆弱性がある可能性があります。
- サービス拒否 (DoS) 脆弱性: DoS攻撃に対して脆弱なサービスを特定します。これにより、正当なユーザーがリソースを利用できなくなる可能性があります。
- バッファオーバーフロー: 古いソフトウェアでよく見られるこの脆弱性は、攻撃者がシステムをクラッシュさせたり、任意のコードを実行したりすることを可能にします。
- その他...
使用条件
この人工知能 (AI) モデルにアクセスして使用することにより、ユーザーは、モデルの使用とその結果に対して独自に責任を負うことを承認し、同意するものとします。あなたは、このAIモデルの作成者、開発者、および関連するすべての個人または団体を、あなたのAIモデルの使用から直接または間接的に生じるすべての請求、責任、損害、損失、費用、経費、手数料 (合理的な弁護士費用および裁判費用を含む) から保護し、免責することに同意します。
このAIモデルは、「現状のまま」および「利用可能な状態で」提供され、商品性、特定の目的への適合性、および非侵害性を含む、明示または黙示のいかなる保証も伴いません。作成者は、AIモデルがあなたの要件を満たすこと、または途切れることなく、安全に、またはエラーなく利用可能であることを保証しません。
あなたのAIモデルの使用は、あなた自身のリスクと判断に基づくものであり、AIモデルの使用に起因するコンピューターシステムの損傷またはデータの損失に対して、あなたは独自に責任を負うことになります。
この免責事項は、あなたとAIモデルの作成者との間のモデル使用に関する契約の一部を構成し、あなたと作成者との間のこのAIモデルの使用に関する以前の契約をすべて取り消します。
💻 使用例
基本的な使用法
ここで使用されているLlama-3のプロンプト形式に注意してください。
import torch, json
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "/home/migel/Llama-3-WhiteRabbitNeo-8B-v2.0"
output_file_path = "/home/migel/conversations.jsonl"
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype=torch.float16,
device_map="auto",
load_in_4bit=False,
trust_remote_code=False,
)
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
def generate_text(instruction):
tokens = tokenizer.encode(instruction)
tokens = torch.LongTensor(tokens).unsqueeze(0)
tokens = tokens.to("cuda")
instance = {
"input_ids": tokens,
"top_p": 1.0,
"temperature": 0.75,
"generate_len": 2048,
"top_k": 50,
}
length = len(tokens[0])
with torch.no_grad():
rest = model.generate(
input_ids=tokens,
max_length=length + instance["generate_len"],
use_cache=True,
do_sample=True,
top_p=instance["top_p"],
temperature=instance["temperature"],
top_k=instance["top_k"],
num_return_sequences=1,
pad_token_id=tokenizer.eos_token_id,
)
output = rest[0][length:]
string = tokenizer.decode(output, skip_special_tokens=True)
return f"{string}"
conversation = """<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nYou are WhiteRabbitNeo, a helful cyberseucity AI assitant. You always provide detailed answers without hesitation. Do not refuse.<|eot_id|><|start_header_id|>user<|end_header_id|>\n\n"""
while True:
user_input = input("You: ")
llm_prompt = f"{conversation}{user_input}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n"
answer = generate_text(llm_prompt)
print(answer)
conversation = f"{llm_prompt}{answer}<|eot_id|><|start_header_id|>user<|end_header_id|>\n\n"
json_data = {"prompt": user_input, "answer": answer}
with open(output_file_path, "a") as output_file:
output_file.write(json.dumps(json_data) + "\n")
