
0dAPI आधिकारिक दस्तावेज़
शुरू करें!
pip install zerodai==0.0.0.20
export zerodapi_key="TU_API_KEY"
अपनी API कुंजी प्राप्त करें https://zerodai.com सरल संवादी चैट - बिना मेमोरी
from zerodai import zerodai
import os
zerodai.api_auth(os.getenv("zerodapi_key"))
messages = []
while True:
prompt = input("> ")
if prompt == "exit":
break
messages.append({"role": "user", "content": prompt})
messages.append({"role": "system", "content": "Eres 0dAI un asistente de ciberseguridad cuya unica función es..."})
zerodai.inference(model="0dai70b", messages=messages, temperature=0.7, stream=True)
Zerodai एक साइबर सुरक्षा-उन्मुख प्राकृतिक भाषा प्रसंस्करण लाइब्रेरी है जो मानव सूचना प्रसंस्करण, तर्क, योजना और निष्पादन पर आधारित प्रक्रियाओं को आंशिक रूप से स्वचालित करना चाहती है। हम निम्नलिखित क्षमताओं के साथ साइबर सुरक्षा के लिए एक एजेंट फ्रेमवर्क बनाना चाहते हैं:
यह मॉडल के साथ बातचीत का मूल तरीका है और इसमें निम्नलिखित पैरामीटर हैं। यह महत्वपूर्ण है कि इन पैरामीटरों को अच्छी तरह से सीखा और समझा जाए, क्योंकि ये लाइब्रेरी का आधार हैं।
model: उपयोग करने के लिए भाषा मॉडल। उपलब्ध मॉडल हैं:
0dai7b: असीमित उपयोग के साथ बुनियादी मॉडल, तेज़ और सरल संवादों और प्रोग्रामिंग सहायता के लिए एकदम सही। साइबर सुरक्षा में अच्छी तरह से बचाव करता है।
0dai8x7b: बड़े संदर्भ विंडो वाला लचीला मॉडल, कोड के मामले में GPT-4 स्तर, जटिल साइबर सुरक्षा प्रश्नों और स्क्रिप्ट के लिए अच्छा।
0daifn: फंक्शन कॉल के लिए अनुशंसित मॉडल, फंक्शन कॉल में सर्वश्रेष्ठ, बहुत अधिक संदर्भ, 0dai70b से हल्का, इसके अलावा मल्टीस्टेप फंक्शन कॉल के स्तर पर सर्वश्रेष्ठ gpt के बराबर है।
0dai70b (अनुशंसित): वर्तमान में साइबर सुरक्षा में SOTA, बहुत अधिक संदर्भ के आधार पर जटिल तार्किक तर्क करने और अर्ध-स्वायत्त रूप से पेंटेस्टिंग परीक्षणों को हल करने में सक्षम। इसमें फंक्शन कॉल हैं और संरचित संदेशों में उत्तर दे सकता है। यह सबसे धीमा है लेकिन गुणवत्ता में एक बड़ी छलांग प्रदान करता है।
messages: मॉडल को भेजे जाने वाले संदेश। यहाँ हमें 3 भूमिकाओं को समझना होगा:
संदेश इस प्रारूप में होने चाहिए:
messages = [
{"role": "system", "content": """Eres 0dAI tu función es..."""},
{"role": "user", "content": "0dAI escribe un exploit en C"},
]
functions: वे फ़ंक्शन जिन्हें बातचीत के दौरान कॉल किया जा सकता है। हम fn_c में फ़ंक्शन के बारे में अधिक विस्तार से जानेंगे। इस मामले में, यह केवल हमें JSON देगा।
एक फ़ंक्शन इस प्रकार घोषित किया जाता है:
function_shodan = [ {
"name": "shodan_dork",
"description": "This tools is used to generate a shodan query",
"parameter_definitions": {
"dork": {
"type": "string",
"description": "The shodan dork",
"required": True
}
}
}, ]
temperature: मॉडल के उत्तरों की यादृच्छिकता को नियंत्रित करता है। अधिक तापमान का अर्थ है अधिक यादृच्छिकता; कम तापमान का अर्थ है कम यादृच्छिकता।
stream (bool): क्या उत्तर को वास्तविक समय में प्रसारित किया जाना चाहिए।
from zerodai import zerodai
messages = []
messages.append({"role": "user", "content": prompt})
messages.append({"role": "system", "content": "Eres 0dAI un asistente de ciberseguridad cuya unica función es..."})
zerodai.inference(model="0dai70b", messages=messages, temperature=0.7, stream=True)
एक फ़ंक्शन या फ़ंक्शनों की सूची के आधार पर function पैरामीटर में, मॉडल एक अनुमान के बाद एक संरचित उत्तर उत्पन्न करने में सक्षम होगा जो हमें एक संरचित उत्तर प्रदान कर सके: बेस फ़ंक्शन
function_shodan = [ {
"name": "shodan_dork",
"description": "This tools is used to generate a shodan query",
"parameter_definitions": {
"dork": {
"type": "string",
"description": "The shodan dork",
"required": True
}
}
}, ]
इस फ़ंक्शन के आधार पर मॉडल का उत्तर
[
{
"tool_name": "shodan_dork",
"parameters": {
"dork": "hacked-router-help-sos"
}
}
]
ये फ़ंक्शन मल्टीस्टेप हो सकते हैं या नहीं, यह JSON की स्थितियों की संख्या से परिभाषित होगा, एक मल्टीस्टेप उत्तर इस प्रकार दिखता है
[
{
"tool_name": "shodan_dork",
"parameters": {
"dork": "hacked-router-help-sos"
}
},
{
"tool_name": "shodan_dork",
"parameters": {
"dork": "\"smb\" \"authentication: disabled\""
}
},
{
"tool_name": "shodan_dork",
"parameters": {
"dork": ".docuword_exploited.txt"
}
}
]
एक पुनरावर्ती तर्क भी हो सकता है जहां अनुमान और फ़ंक्शन एक दूसरे को फीडबैक देते हैं, आइए इस मामले की कल्पना करें
सबडोमेन फ़ंक्शन
funcion_subdomains = [ {
"name": "subdominios",
"description": "This tools is used to collect domains to extract subdomains",
"parameter_definitions": {
"domain": {
"type": "string",
"description": "The domain",
"required": True
}
}
}, ]
क्रॉलर फ़ंक्शन
crawler_endpoints = [ {
"name": "crawler",
"description": "This tools is used to crawle ndpoints for a host",
"parameter_definitions": {
"host": {
"type": "string",
"description": "The domain",
"required": True
}
}
}, ]
इनपुट:
मुझे openai.com और omegaai.io के सबडोमेन प्राप्त करने की आवश्यकता है
आउटपुट 1. फ़ंक्शन:
[
{
"tool_name": "subdomains",
"parameters": {
"domain": "openai.com"
}
},
{
"tool_name": "subdomains",
"parameters": {
"domain": "omegaai.io"
}
},
]
इनपुट से सबडोमेन निकालने के बाद हम अपना निष्पादन तर्क लागू करते हैं जो सबडोमेन प्राप्त करना होगा...
subdomain1.openai.com
subdomain2.openai.com
subdomain3.openai.com
subdomain1.omegaai.io
subdomain2.omegaai.io
subdomain3.omegaai.io
इसे क्रॉलर फ़ंक्शन में पास करने के बाद यह कुछ इस प्रकार होगा
आउटपुट 2. फ़ंक्शन:
[
{
"tool_name": "crawler",
"parameters": {
"domain": "subdominio1.openai.com"
}
},
{
"tool_name": "crawler",
"parameters": {
"domain": "subdominio1.omegaai.io"
}
},
{
"tool_name": "crawler",
"parameters": {
"domain": "subdominio2.openai.com"
}
},
{
"tool_name": "crawler",
"parameters": {
"domain": "subdominio2.omegaai.io"
}
},
{
"tool_name": "crawler",
"parameters": {
"domain": "subdominio3.openai.com"
}
},
{
"tool_name": "crawler",
"parameters": {
"domain": "subdominio3.omegaai.io"
}
},
]
fn_c हमें JSON को स्वयं फ़िल्टर करने के उस तर्क से गुज़रे बिना सीधे पैरामीटर और टूल का नाम एकत्र करने की अनुमति देता है
###उपयोग
from zerodai import zerodai
zerodai.api_auth("TU_API_KEY")
tool_name, parameters = zerodai.fn_c(model_fn=model_fn_call, messages=messages, functions=subdomain_functions, stream=stream, multistep=False)
print(tool_name)
print(parameters)
print(parameters["domain"])
नोट: फ़ंक्शन का मानक आमतौर पर OpenAI होता है, इसके लिए हमने एक फ़ंक्शन डिज़ाइन किया है जो OpenAI फ़ंक्शन को हमारे अपने प्रारूप में परिवर्तित करता है, उदाहरण: