4.2 KiB
HTTP Specification Documentation
The HTTP specification in the Agentic Security project is designed to handle various types of requests, including text, image, audio, and file uploads. This documentation provides a detailed overview of the HTTP specification and its usage.
Overview
The HTTP specification is implemented in the LLMSpec class, which is used to define and execute HTTP requests. The class supports different modalities, including text, image, audio, and file uploads, and provides methods to validate and execute these requests.
Modalities
The HTTP specification supports the following modalities:
Text
Text-based requests are the most common type of request. The LLMSpec class replaces the <<PROMPT>> placeholder in the request body with the provided prompt.
Image
Image-based requests include an image encoded in base64 format. The LLMSpec class replaces the <<BASE64_IMAGE>> placeholder in the request body with the provided base64-encoded image.
Audio
Audio-based requests include an audio file encoded in base64 format. The LLMSpec class replaces the <<BASE64_AUDIO>> placeholder in the request body with the provided base64-encoded audio.
Files
File-based requests include file uploads. The LLMSpec class handles multipart form data and includes the provided files in the request.
LLMSpec Class
The LLMSpec class is the core of the HTTP specification. It provides the following methods and properties:
Methods
from_string(http_spec: str) -> LLMSpec: Parses an HTTP specification string into anLLMSpecobject.validate(prompt: str, encoded_image: str, encoded_audio: str, files: dict) -> None: Validates the request parameters based on the specified modality.probe(prompt: str, encoded_image: str = "", encoded_audio: str = "", files: dict = {}) -> httpx.Response: Sends an HTTP request using the specified parameters.verify() -> httpx.Response: Verifies the HTTP specification by sending a test request.
Properties
modality: Modality: Returns the modality of the request (text, image, audio, or files).
Examples
Text Request
http_spec = """
POST https://api.example.com/v1/chat/completions
Authorization: Bearer sk-xxxxxxxxx
Content-Type: application/json
{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "<<PROMPT>>"}],
"temperature": 0.7
}
"""
spec = LLMSpec.from_string(http_spec)
response = await spec.probe("What is the capital of France?")
Image Request
http_spec = """
POST https://api.example.com/v1/chat/completions
Authorization: Bearer sk-xxxxxxxxx
Content-Type: application/json
{
"model": "gpt-4-vision-preview",
"messages": [{"role": "user", "content": "What is in this image? <<BASE64_IMAGE>>"}],
"temperature": 0.7
}
"""
spec = LLMSpec.from_string(http_spec)
encoded_image = encode_image_base64_by_url("https://example.com/image.jpg")
response = await spec.probe("What is in this image?", encoded_image=encoded_image)
Audio Request
http_spec = """
POST https://api.example.com/v1/chat/completions
Authorization: Bearer sk-xxxxxxxxx
Content-Type: application/json
{
"model": "whisper-large-v3",
"messages": [{"role": "user", "content": "Transcribe this audio: <<BASE64_AUDIO>>"}],
"temperature": 0.7
}
"""
spec = LLMSpec.from_string(http_spec)
encoded_audio = encode_audio_base64_by_url("https://example.com/audio.mp3")
response = await spec.probe("Transcribe this audio:", encoded_audio=encoded_audio)
File Request
http_spec = """
POST https://api.example.com/v1/chat/completions
Authorization: Bearer sk-xxxxxxxxx
Content-Type: multipart/form-data
{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Process this file: <<FILE>>"}],
"temperature": 0.7
}
"""
spec = LLMSpec.from_string(http_spec)
files = {"file": ("document.txt", open("document.txt", "rb"))}
response = await spec.probe("Process this file:", files=files)
Conclusion
The HTTP specification in the Agentic Security project provides a flexible and powerful way to handle various types of requests. This documentation serves as a guide to understanding and utilizing the HTTP specification effectively.