AWS Machine Learningآخر تحديث

الإخراج المنظم للنماذج التابعة لأنتربيك كلود على أمازون بيدروك

تدعم Amazon Bedrock الآن الإخراج المنظم لجميع نماذج Anthropic Claude على كلا نهايات bedrock-runtime وbedrock-mantle، حيث يتم تقديم ملفات JSON متوافقة مع الشيفرة، وفقًا لبنية محددة، دون الحاجة إلى تحليل مخصص أو منطق إعادة…

مصدر الصورة · AWS Machine Learning

يدعم Amazon Bedrock الآن الإخراج المنظم لجميع نماذج Anthropic Claude، على طرفي bedrock-runtime وbedrock-mantle، عندما تكون النماذج متاحة.

سواء اتصلت بكلود من خلال Boto3 وواجهات برمجة الأنظمة bedrock-runtime أو من خلال واجهة برمجة الأنظمة Messages ونقطة النهاية bedrock-mantle، يمكنك الآن استقبال ردود JSON متوافقة مع الشيفرة التي تتبع هيكلًا محددًا. لم تعد بحاجة إلى تحليل مخصص أو منطق إعادة المحاولة أو معالجة لاحقة.

التطبيقات العملية

مع الإخراج المنظم لبيانات Claude على Amazon Bedrock، يمكنك أتمتة مهام موثوقة تتوافق مع الشبكة العصبية في جميع الصناعات. وتشمل الأمثلة استخراج كل الحقول المطلوبة من تقارير الإيرادات المالية ووثائق الامتثال، وتحليل الملاحظات الطبية إلى سجلات الصحة الإلكترونية (EHR)، وإثراء كتالوجات المنتجات بنتائج متسقة ومصادق عليها. يمكنك أيضًا تحليل العقود من حيث الشروط الرئيسية والأطراف والتزاماتها، أو توجيه طلبات الدعم الذكي في مجال القوة، حيث تتطابق النوايا والمشاعر والكيانات دائمًا مع نموذج البيانات للمؤسسة.

ما الذي يتغير مع النتائج المُنظمة على Amazon Bedrock؟

تستخدم الإخراجات المنظمة تشفيرًا محدودًا لضمان الالتزام بنموذج JSON الخاص بك أثناء إنتاج الكلمات، وليس بعد ذلك. لا ينتج النموذج كلمات تخالف نموذجك. هذا يغير من صيغة الإخراج من احتمالي إلى حتمي.

مع إمكانية استخدام آليتين متكاملتين على كلا نهايات Amazon Bedrock:

الميزة الغرض حالة الاستخدام
صيغة إخراج نموذج JSON تحكم في هيكل رد الفعل النموذج استخراج البيانات، توليد التقارير، استجابات واجهة البرمجة الأوامتية
استخدام الأداة بدقة تحقق من معلمات الأداة ضد النماذج أعمال العملاء، استدعاء الوظائف، الأتمتة متعددة الخطوات

ما يعنيه ذلك بالنسبة لك

كل رد هو بيانات JSON صحيحة، لذلك لا تواجه أخطاء JSON.parse() أو استثناءات تفسير البيانات. كما أن الردود آمنة من الناحية النوعية: يتم فرض أنواع الحقول، ويكون الحقول الضرورية دائمًا موجودة. نظرًا لأن المخرجات دائمًا تلتزم بالمخطط الخاص بك، لا حاجة للتكرار لتصحيح انتهاكات المخطط، مما يجعل التكامل أكثر موثوقية. كما تحد من المخرجات إلى الحقول التي يحددها المخطط، مما يقلل من عدد كلمات المخرجات ويمكن أن يخفض تكاليف الاستدلال في أعمال بكميات كبيرة. هذه الخصائص تجعل المخرجات المنظمة جاهزة للإنتاج، بحيث يمكنك النشر على نطاق واسع دون الحاجة إلى كود لتحقق المخطط الإضافي.

النماذج المدعومة والتوفر

تعمل الإخراجات المنظمة مع الاستدلال الضربي، بحيث يمكنك معالجة كميات كبيرة من الطلبات بشكل غير متزامن مع استلام إخراجات متوافقة مع الشيفرة. على نهاية endpoint bedrock-runtime، تعمل أيضًا مع الاستدلال عبر المناطق المختلفة، بحيث يمكنك استخدامها في جميع مناطق AWS دون أي إعدادات إضافية. إذا كنت بحاجة إلى استجابات في الوقت الفعلي، يمكنك تشغيل الإخراجات المنظمة كأحداث مكتوبة.

كيف يعمل

عند تقديم طلب باستخدام نموذج JSON، فإن ما يحدث خلف الكواليس هو كالتالي:

  1. تحقق الشيفرة – يقوم Amazon Bedrock بتحقق الشيفرة JSON الخاصة بك ضد مجموعة JSON Schema Draft 2020-12 المدعومة.
  2. تجميع القواعد النحوية – بالنسبة للأنظمة الجديدة، يقوم Amazon Bedrock بتجميع ملف قواعد نحوية (قد يستغرق الطلب الأول وقتًا أطول بعض الشيء).
  3. التخزين المؤقت – يتم تخزين القواعد المنقحة في الذاكرة المؤقتية لمدة 24 ساعة، مما يجعل الطلبات اللاحقة أسرع.
  4. الإنتاج المقيد – يقوم النموذج بإنشاء رموز تُنتج نصًا JSON صحيحًا يتوافق مع الشيفرة الخاصة بك.

اعتبارات الأداء

من حيث الأداء، قد يستغرق الطلب الأول باستخدام هيكل جديد وقتًا أطول، لأن Amazon Bedrock يقوم بتحليل القواعد قبل بدء التوليد. بعد ذلك التحليل الأولي، تتم الطلبات اللاحقة التي تستخدم نفس الهيكل بسرعة وبتكلفة منخفضة، لأن القواعد المحللة مخزنة في المكدس. يتم تحديد نطاق هذا المكدس ضمن حسابك ويستمر لمدة 24 ساعة من أول استخدام. تغيير هيكل نموذج JSON الخاص بك يؤدي إلى فقدان الذاكرة المؤقت ويحفز على تجميع جديد، بينما تغيير الأعمدة فقط مثل الاسم أو الوصف يبقى القواعد المخزنة سليمة.

بدء العمل: الإخراج المنظم باستخدام واجهة API InvokeModel (bedrock-runtime)

تأخذ واجهة برمجة الأوامر InvokeModel جسم الطلب المبني على لغة Anthropic-native، لذا يتم تضمين الشيفرة في output_config.format ككائن JSON بدلاً من سلسلة نصية JSON. يوضح المثال التالي كيفية استخراج البيانات المنظمة من بريد العملاء باستخدام boto3 مع نموذج Claude من Anthropic:

بيثون

import boto3
import json

REGION = "us-east-1" # Choose your preferred region
bedrock_runtime = boto3.client(service_name="bedrock-runtime", region_name=REGION)

# Define the JSON schema for structured output
schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string", "description": "Customer name"},
        "email": {"type": "string", "description": "Customer email address"},
        "plan_interest": {"type": "string", "description": "Product plan of interest"},
        "demo_requested": {"type": "boolean", "description": "Whether a demo was requested"}
    },
    "required": ["name", "email", "plan_interest", "demo_requested"],
    "additionalProperties": False
}

# Make a request with structured outputs via the InvokeModel API
# (reusing the schema defined for the Converse example)
response = bedrock_runtime.invoke_model(
    modelId="global.anthropic.claude-sonnet-5-5",
    body=json.dumps({
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 512,
        "messages": [
            {"role": "user", "content": (
                "Paulo Santos (paulo@example.com) is interested in our Enterprise plan "
                "and wants to schedule a demo for next Tuesday at 2pm."
            )}
        ],
        "output_config": {"format": {"type": "json_schema", "schema": schema}}
    })
)

body = json.loads(response["body"].read())

# Check the stop reason before parsing
if body["stop_reason"] == "end_turn":
    result_text = next(b["text"] for b in body["content"] if b["type"] == "text")
    print(json.dumps(json.loads(result_text), indent=2))
elif body["stop_reason"] == "max_tokens":
    print("Response truncated: increase max_tokens and retry.")

JSON

{
    "name": "Paulo Santos",
    "email": "paulo@example.com",
    "plan_interest": "Enterprise",
    "demo_requested": true
}

يتوافق الرد مع صيغةك. لا حاجة لإجراء أي التحقق الإضافي.

للمثالات الإضافية لاستخدام واجهة البرمجة الأوامتية، بما في ذلك واجهة برمجة الأوامر للرسائل، يرجى الرجوع إلى الكُتيب المرفق الكُتيب النموذجي.

استخدام الأدوات بدقة في عمليات العمل النشطة

Amazon Bedrock Mantle مصمم للتطبيقات العميلية التي تحتوي على أدوات على الجانب الخادم، واستدلالات خلفية، ومحادثات ذات حالة. بفضل استخدام الأدوات بشكل صارم عند نقطة النهاية bedrock-mantle، يمكنك الآن ضمان أن معاملات الأداة تتطابق بدقة مع نموذج الإدخال الخاص بك. يوضح المثال التالي كيفية تعريف أداة مع تطبيق صارم لنموذج الإدخال:

Import json
from anthropic import AnthropicBedrockMantle

# Reusing the client created in the Messages API example
client = AnthropicBedrockMantle(aws_region="us-east-1")

message = client.messages.create(
    model="anthropic.claude-sonnet-5",
    max_tokens=512,
    messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
    tools=[
        {
            "name": "get_weather",
            "description": "Get the current weather for a specified location",
            "strict": True,
            "input_schema": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g., San Francisco, CA"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "description": "Temperature unit"
                    }
                },
                "required": ["location", "unit"],
                "additionalProperties": False
            }
        }
    ]
)

#Tool inputs conform to the schema
for block in message.content:
    if block.type == "tool_use":
        print(f"Tool: {block.name}")
        print(f"Input: {json.dumps(block.input, indent=2)}")

تحديد strict: true يقيد مدخل الأداة الخاص بالنموذج ليكون مطابقًا تمامًا للتصور الخاص بك. حقل الموقع دائمًا عبارة عن سلسلة نصية، وحقل الوحدة دائمًا إما على درجة مئوية أو فهرنهايت. النموذج لا يمكنه إضافة حقول خارج تصورك، لذا يحتوي مدخل الأداة على فقط ما يحدده تصورك.

هذا مفيد بشكل خاص لحالات الاستخدام الخاصة بالعناصر على Amazon Bedrock Mantle، حيث تنظم النماذج عمليات العمل المتعددة الخطوات باستخدام أدوات الجانب الخادم مثل البحث على الويب ومفسر الكود.

أفضل حالات الاستخدام للنتائج المنظمة من Claude

تقلل النواتج المنظمة من تعقيد التعامل مع الأخطاء في ثلاثة أنماط شائعة:

  • استخراج البيانات: استخرج الحقول من الفواتير والعقود والبريد الإلكتروني والسجلات التعليمية إلى JSON، بحيث يتطابق دائمًا مع الشيفرة الخاصة بك، ويمكن تحميله في قواعد البيانات أو أنظمة إدارة علاقات العملاء (CRM).
  • دعوات الأداة المساعدة الموثوقة: يجب التحقق من صحة معاملات الأداة ضد نمطها عند إنشاءها، حتى تتمكن عمليات العملية المتعددة للأداة من التشغيل دون أخطاء بسبب المدخلات غير المُشكَّلة.
  • التصنيف على نطاق واسع: تصنيف الطلبات، والروابط، أو المحتوى حسب النية، والأولوية، والمشاعر لتوجيهه وتنظيمه وتقييمه.

يتمتع كلود هايوك 5.5 بشكل موثوق بتحمل المهام السريعة والمتكررة مثل التلخيصات، وتجميع البيانات، واستعلامات قاعدة البيانات، وطلبات التصنيف. يوضح المثال التالي كيفية تصنيف وتوجيه البيانات الواردة باستخدام واجهة API Invoke وهايوك 5.5:

import boto3
import json

REGION = "us-east-1" # Choose your preferred region
bedrock_runtime = boto3.client(service_name="bedrock-runtime", region_name=REGION)

# Classification schema: enums restrict output to a fixed set of labels
schema = {
    "type": "object",
    "properties": {
        "category": {
            "type": "string",
            "enum": ["billing", "technical", "account", "sales", "other"],
            "description": "Primary ticket category"
        },
        "priority": {
            "type": "string",
            "enum": ["low", "medium", "high", "urgent"],
            "description": "Urgency based on business impact"
        },
        "sentiment": {
            "type": "string",
            "enum": ["positive", "neutral", "negative"],
            "description": "Customer sentiment"
        },
        "escalate": {"type": "boolean", "description": "Whether a human should review immediately"},
        "reason": {"type": "string", "description": "One-sentence justification for the classification"}
    },
    "required": ["category", "priority", "sentiment", "escalate", "reason"],
    "additionalProperties": False
}

ticket = (
    "Our production API calls have been failing with 500 errors since this morning. "
    "We're losing orders every minute. This is the second outage this month!"
)

# Make a request with structured outputs via the InvokeModel API
response = bedrock_runtime.invoke_model(
    modelId="global.anthropic.claude-haiku-5-5",
    body=json.dumps({
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 512,
        "system": "You are a support ticket classifier. Classify the ticket accurately.",
        "messages": [
            {"role": "user", "content": f"Classify this support ticket:\n\n{ticket}"}
        ],
        "output_config": {"format": {"type": "json_schema", "schema": schema}}
    })
)

body = json.loads(response["body"].read())

# Check the stop reason before parsing
if body["stop_reason"] == "end_turn":
    result_text = next(b["text"] for b in body["content"] if b["type"] == "text")
    result = json.loads(result_text)
    print(json.dumps(result, indent=2))
    # Route the ticket based on the guaranteed-valid labels
    if result["escalate"]:
        print(f"Escalating to on-call: {result['category']} / {result['priority']}")
elif body["stop_reason"] == "max_tokens":
    print("Response truncated: increase max_tokens and retry.")

المتطلبات وأفضل الممارسات

لاستخدام المخرجات المنظمة بشكل فعال على Amazon Bedrock، اتبع هذه الإرشادات:

  1. إعداد Properties إضافية: false على جميع الكائناتهذا ضروري لكي تعمل النتائج المنظمة. بدونه، لن يتم قبول صيغة البيانات الخاصة بك.
  2. استخدم أسماء ومواصفات مفصلة للحقول: تستخدم النماذج أسماء ووصفات الخصائص لفهم البيانات التي يجب استخراجها. الأسماء الواضحة مثل customer_email تتفوق على الأسماء العامة مثل field1.
  3. استخدم enum للقيم المحدودة: عندما يحتوي الحقل على مجموعة محدودة من القيم الصحيحة، استخدم enum لتقييد الخيارات.
  4. ابدأ من الإعدادات البسيطة، ثم أضف التعقيد تدريجيًا: ابدأ بالحقول اللازمة الأدنى، وأضف التعقيد تدريجيًا. التكوينات الأساسية يتم تنفيذها بشكل أسرع، وهي أسهل في التصحيح، وتحافظ على حجم البيانات الصغيرة للمطالبة لأن التكوين يُحتسب ضمن حجم بيانات API Converse.
  5. إعادة استخدام الصيغات للاستفادة من التخزين المؤقت: قم بترتيب تطبيقك بحيث تستخدم نفس الصيغات في جميع الطلبات. يساعد سجل القواعد الذي يستمر 24 ساعة على تحسين الأداء للاستعلامات المتكررة.
  6. تحقق من سبب التوقف في كل رد: يمكن أن تنتج حالتان ردودًا غير متوافقة: الرفض (عندما يرفض النموذج لأسباب الأمان) وحدود الكلمات (عند الوصول إلى max_tokens قبل الانتهاء). تعامل مع كلا الحالتين في كودك.
  7. اختبار باستخدام بيانات واقعية قبل النشر: تحقق من صحة صيغك الخاصة مع مدخلات تمثل الوضع الفعلي. غالبًا ما تكشف الحالات الحرجة في البيانات الحقيقية عن مشاكل في تصميم الصيغة.

للحصول على ممارسات أفضل إضافية وتوصيات في تصميم الصيغ، يرجى الرجوع إلى المخرجات المُنظمة في دليل مستخدم Amazon Bedrock.

ميزات نموذج JSON المدعوم

  1. جميع الأنواع الأساسية: object، array، string، integer، number، boolean، null.
  2. enum (مجرد سلاسل نصية، أرقام، قيم صحيحة أو null).
  3. const,anyOf,allOf (مع قيود).
  4. $ref,$def,وdefinitions (مراجع داخلية فقط).
  5. أشكال النصوص: date-time، time، date، duration، email، hostname، uri، ipv4، ipv6، uuid.
  6. مصفوفة minItems (بقيم فقط 0 و1).

غير مدعوم

هذه الكلمات المفتاحية مقبولة من قبل الـ API، لكن لا يتم تطبيقها أثناء التوليد. الطلب الذي يحتوي على هذه الكلمات المفتاحية يُعطى ردًا ناجحًا، ومع ذلك يمكن للنموذج أن يعطي قيمًا تنتهكها. يجب التحقق من هذه القيود في تطبيقك بدلاً من الاعتماد على الشيفرة لتطبيقها.

  1. الأنظمة الريدية.
  2. الإشارات الخارجية $ref.
  3. القيود العدديةminimum, maximum, multipleOf).
  4. قيود النصوص (minLength, maxLength).
  5. additionalProperties مُعدَل إلى أي شيء غير false.

الخلاصة

توفر الإخراجات المنظمة لأدوات Anthropic Claude على Amazon Bedrock الثقة التي تحتاجها تطبيقات الذكاء الاصطناعي الإنتاجية. وهو متاح الآن على نهايات bedrock-runtime وbedrock-mantle. من خلال دمج تنسيق إخراج JSON Schema واستخدام الأدوات الصارم، يمكنك بناء ممرات بيانات لا تحتاج إلى التحقق الإضافي. كما يمكنك إنشاء سيرفرات عمل آلية موثوقة وتطبيقات ذكاء اصطناعي إنتاجية دون تحليل مخصص أو منطق إعادة المحاولة.

المخرجات المنظمة لكلود على Amazon Bedrock متاحة الآن بشكل عام. لمعرفة المزيد، راجع وثائق Amazon Bedrock واستكشف دفتر الملاحظات النموذجي.

أي عمليات عمل يمكن أن تتحسن باستخدام JSON المتوافق مع الشيفرة والمنهجية في مؤسستك؟ شارك رأيك وأسئلتك في التعليقات.


حول المؤلفين

المصدر الأصلي

AWS Machine Learning

ملاحظات المحتوى

النشر الأصلي والحقوق تعود إلى المصدر.

ترجمة آلية · يُرجى الرجوع إلى الأصل