Loading
Loading
Azure AI Foundry (formerly Azure AI Studio) is the comprehensive platform for building enterprise AI solutions.
import json
from dataclasses import dataclass, field
from typing import List, Dict, Any
# ─── Azure AI Foundry Simulation ───────────────────────────
@dataclass
class FoundryModel:
name: str
provider: str
family: str
input_cost: float # per 1K tokens
output_cost: float
CATALOG = [
FoundryModel("gpt-4o", "OpenAI", "GPT-4", 0.005, 0.015),
FoundryModel("gpt-35-turbo", "OpenAI", "GPT-3", 0.0005, 0.0015),
FoundryModel("llama-3-70b", "Meta", "Llama", 0.001, 0.003),
FoundryModel("mistral-large", "Mistral", "Mistral",0.004, 0.012),
FoundryModel("phi-3-mini", "Microsoft", "Phi", 0.0001, 0.0002),
FoundryModel("claude-3-sonnet", "Anthropic", "Claude", 0.003, 0.015),
]
@dataclass
class PromptFlowStep:
name: str
kind: str # "llm", "python", "prompt", "search"
config: Dict[str, Any] = field(default_factory=dict)
@dataclass
class PromptFlow:
name: str
steps: List[PromptFlowStep] = field(default_factory=list)
def add_step(self, name: str, kind: str, **cfg) -> "PromptFlow":
self.steps.append(PromptFlowStep(name, kind, config=cfg))
return self
def run(self, inputs: Dict[str, Any]) -> Dict[str, Any]:
context = dict(inputs)
print(f" 🔄 تشغيل Prompt Flow: {self.name}")
for step in self.steps:
print(f" [{step.kind.upper()}] {step.name}...", end=" ")
if step.kind == "search":
context["retrieved_docs"] = [
f"وثيقة ذات صلة بـ '{context.get('query', '')}' #{i}" for i in range(3)
]
context["num_docs"] = 3
elif step.kind == "llm":
q = context.get("query", "")
docs = context.get("retrieved_docs", [])
context["answer"] = f"[{step.config.get('model','gpt-4o')}] إجابة على '{q[:40]}' بناءً على {len(docs)} وثيقة"
elif step.kind == "python":
fn = step.config.get("fn", lambda c: c)
context = fn(context)
elif step.kind == "prompt":
pass # تنسيق الـ prompt
print("✅")
return context
class AIFoundryProject:
def __init__(self, hub: str, name: str):
self.hub = hub
self.name = name
self.flows: List[PromptFlow] = []
self._eval_results: List[Dict] = []
def create_flow(self, flow_name: str) -> PromptFlow:
flow = PromptFlow(flow_name)
self.flows.append(flow)
print(f" 📊 Flow: {flow_name}")
return flow
def evaluate(self, flow: PromptFlow, test_cases: List[Dict]) -> Dict:
scores = []
for tc in test_cases:
result = flow.run(tc)
quality = 0.85 + len(result.get("answer", "")) * 0.0001
scores.append(min(0.99, quality))
avg = sum(scores) / len(scores)
self._eval_results.append({"flow": flow.name, "avg_score": avg, "cases": len(test_cases)})
return {"flow": flow.name, "avg_score": round(avg, 4), "num_cases": len(test_cases)}
# ─── بناء RAG Pipeline ─────────────────────────────────────
print("🔵 Azure AI Foundry — بناء RAG Chatbot:")
print("=" * 52)
# عرض Model Catalog
print("\n📦 Model Catalog (مختارات):")
for m in CATALOG:
in_s = "$" + f"{m.input_cost:.4f}"
out_s = "$" + f"{m.output_cost:.4f}"
print(f" [{m.provider:<12}] {m.name:<22} in:{in_s} out:{out_s}")
# إنشاء المشروع
print(f"\n\n🏗️ إنشاء AI Foundry Project:")
project = AIFoundryProject("hub-enterprise-001", "customer-support-ai")
# بناء RAG Flow
print(f"\n📊 بناء Prompt Flow (RAG):")
rag_flow = (
project.create_flow("customer-support-rag")
.add_step("format-query", "prompt", template="Answer this: {query}")
.add_step("search-knowledge", "search", index="support-docs", top_k=3)
.add_step("generate-answer", "llm", model="gpt-4o", temp=0.3)
.add_step("post-process", "python",
fn=lambda c: {**c, "formatted": c.get("answer","")[:100] + "..."})
)
print(f" الخطوات: {len(rag_flow.steps)}")
# تشغيل
print(f"\n▶️ تشغيل Pipeline:")
result = rag_flow.run({"query": "كيف أعيد ضبط كلمة المرور؟", "lang": "ar"})
print(f" الإجابة: {result.get('answer','')[:80]}...")
print(f" الوثائق المسترجعة: {result.get('num_docs', 0)}")
# التقييم
print(f"\n📊 تقييم الـ Flow:")
test_cases = [
{"query": "كيف أعيد ضبط كلمة المرور؟"},
{"query": "ما أوقات الدعم الفني؟"},
{"query": "كيف أطلب استرداد المبلغ؟"},
]
eval_r = project.evaluate(rag_flow, test_cases)
score_s = f"{eval_r['avg_score']:.4f}"
print(f" النتيجة: {score_s} ({eval_r['num_cases']} حالات اختبار)")
print(f"\n✅ Azure AI Foundry RAG Pipeline جاهز للإنتاج!")