Галоўная / Артыкулы / Практычныя прытамулі: Агенты RAG з можнае адзіроўваннем голасу: відстэйкаванне агентаў RAG з начала да канца за дапамой MLflow і Qdrant

Практычныя прытамулі: Агенты RAG з можнае адзіроўваннем голасу: відстэйкаванне агентаў RAG з начала да канца за дапамой MLflow і Qdrant

Практычныя прыказкі: Агенты RAG з можлівасцю спазіравання голасу: трэсінг агентаў RAG з начала да канца за дапамою MLflow і Qdrant: контракты, перакананні та слоты для коду для каманд.

10534 слоў

Наступныя прыміткі паказваюць практычны падход да розумэння «Observable Voice RAG Agents: Tracing RAG Agents End-to-End за дапамою MLflow і Qdrant». Акцэнт ставіцца на кантракты, пераконтроўванні і месца для коду, які можна легка адразу вставіць, а не на мотывацыйныя аспекты. Калі працуеце над адглядам, спачатку запісайце кантракт: неабяжныя вхідныя даны, сігнал успеху і тое, што выканаецца у разе частковага невыпання. Такі список пераконтроўвання дапамагае заліцьваць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына невыпання павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны процес.

Архітектура

Архітектура працюе наякшым чынам, калі яе спрыяваць як меравальную паверхню. Запісаце адны ідеальны прыклад, адну ситуацыю неудачы і прыметкі па адвярненню роботы пры расшырэнні масштаба. Спрыяйце гэтам этапу як кантракту межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад тыхоўскага частковага завершэння. Раздзеліце політыку часткавага апранкавання і політыку выкарыстоўвання дадзеных. Змена адной з іх не павінна вымагаць перапісвання другой, калі зменяюцыся паказнікі якосці.

Адкалэнне

Эта рэалізацыя працуе наўсёй краща, калі яе спрыяваць як мерымабельную паверхню. Зафіксавайце адны ідеальны прыклад работы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць сферу дзеяння. Запісвайце часы выконання і косты токеноў або запытак па боку ад функцыйнальных рэзультатаў. Візуабельнасць костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмовай среды ў спяльныя сераўеры. Раздзеляйце правілы часткавага обробкі дадзеных і правілы ўтрымання іх. Змена аднаго з яных не должна прымусіваць перапісванне другога, калі змянююцыся паказнікі якосці.

.
├── __init__.py
├── .env
├── agent_with_langfuse_observability.py
└── agent_with_mlflow_observability.py
# Cartesia (STT + TTS)
CARTESIA_API_KEY=

# OpenAI
OPENAI_API_KEY=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

# LiveKit local dev server (default dev credentials)
LIVEKIT_URL=ws://localhost:7880
LIVEKIT_API_KEY=devkey
LIVEKIT_API_SECRET=secret

# langfuse
LANGFUSE_SECRET_KEY=
LANGFUSE_PUBLIC_KEY=
LANGFUSE_HOST=http://172.20.10.8:3000

# mlflow
OTEL_EXPORTER_OTLP_ENDPOINT=http://0.0.0.0:5000
OTEL_EXPORTER_OTLP_HEADERS=x-mlflow-experiment-id=0
OTEL_SERVICE_NAME=livekit-voice-agent
import os
import logging

from livekit.agents import JobContext, JobProcess, WorkerOptions, cli, function_tool
from livekit.agents.voice import Agent, AgentSession
from livekit.agents.telemetry import set_tracer_provider
from livekit.plugins import openai, silero, cartesia

from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.resources import Resource, SERVICE_NAME

from dotenv import load_dotenv, find_dotenv

from llama_index.core import VectorStoreIndex, Settings, SimpleDirectoryReader, StorageContext
from llama_index.vector_stores.qdrant import QdrantVectorStore
from llama_index.embeddings.ollama import OllamaEmbedding
from llama_index.llms.ollama import Ollama
from qdrant_client import QdrantClient, AsyncQdrantClient

load_dotenv(find_dotenv())
# configs
Settings.embed_model = OllamaEmbedding(model_name="embeddinggemma:latest")
Settings.llm = Ollama(model="gemma3:latest")

# creates a persistant index to disk
client = QdrantClient(url="http://localhost:6333", api_key="th3s3cr3tk3y")
aclient = AsyncQdrantClient(url="http://localhost:6333", api_key="th3s3cr3tk3y")

# create our vector store with hybrid indexing enabled
vector_store = QdrantVectorStore(
    "mortgage",
    client=client,
    aclient=aclient
)

# create the index reference to vector store
index = VectorStoreIndex.from_vector_store(vector_store=vector_store)

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("voice-agent")
@function_tool()
async def query_info(query: str) -> str:
    """Get more information about a specific topic"""
    print(f"query: {query}")
    retriever = index.as_retriever(similarity_top_k=20)
    nodes_with_scores = retriever.retrieve(query)
    context = ""
    for node in nodes_with_scores:
        print(f"Query result: {node.text}")
        context = context + node.text + ". \n"
    return context
def configure_mlflow_tracing():
    """Configure OpenTelemetry to send traces to MLflow."""
    if not os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT"):
        logger.warning("OTEL_EXPORTER_OTLP_ENDPOINT not set, tracing disabled")
        return None

    service_name = os.getenv("OTEL_SERVICE_NAME", "livekit-voice-agent")
    resource = Resource.create({SERVICE_NAME: service_name})

    provider = TracerProvider(resource=resource)
    provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))

    # Set both global and LiveKit tracer provider
    trace.set_tracer_provider(provider)
    set_tracer_provider(provider)

    logger.info("MLflow tracing configured successfully!")
    return provider
async def entrypoint(ctx: JobContext) -> None:
    """Main entrypoint for the agent."""
    logger.info(f"Agent starting for room: {ctx.room.name}")

    # Connect to the room
    await ctx.connect()

    # Create the voice agent with all components
    agent = Agent(
        instructions=(
            "You are a helpful mortgage voice assistant. Your interface "
            "with users will be voice. You should use short and concise "
            "responses, and avoiding usage of unpronouncable punctuation."
            "Always use your tools to get the realtime information."
            "If you dont find any information politely respond the same to user."
            "Never answer anything other than mortgage subject and reject politely."
            "Keep your responses concise and conversational since you're speaking out loud."
            "Be friendly and helpful."
        ),
        stt=cartesia.STT(), # Speech-to-Text
        llm=openai.LLM(model="gpt-4o-mini"), # Language Model
        # voice-id: 9626c31c-bec5-4cca-baa8-f8ba9e84c8bc, f786b574-daa5-4673-aa0c-cbe3e8534c02, 630ed21c-2c5c-41cf-9d82-10a7fd668370
        tts=cartesia.TTS(model="sonic-3", voice="630ed21c-2c5c-41cf-9d82-10a7fd668370"), # Text-to-Speech
        vad=silero.VAD.load(),
        tools=[query_info]
    )

    # Create and start the agent session
    session = AgentSession()
    await session.start(agent, room=ctx.room)

    logger.info("Agent session started! Ready for conversation.")
def prewarm(proc: JobProcess) -> None:
    """Prewarm function to load models before handling requests."""
    # Configure tracing before anything else
    configure_mlflow_tracing()

    # Preload Silero VAD model for faster startup
    proc.userdata["vad"] = silero.VAD.load()
    logger.info("Prewarmed VAD model")
if __name__ == "__main__":
    cli.run_app(
        WorkerOptions(
            entrypoint_fnc=entrypoint,
            prewarm_fnc=prewarm,
        )
    )

Як запускаць?

Як запускаць? Цей падчынак працуе найкраща, калі яго расследжваць як вимерную плошчу. Зберагачыце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць сферу дзеяння. Храніце настройкі парадульна коду прыкладнага програмы. Файлы сяродавішняе сераўісу, базы зберагачэння секретных даных і пазнакі функцый крануцца ў адным месцы, якое аператары можаць пераглядаць без неабяжнага чытання всіх элементаў структуры. Раздзеляйце правілы часткавага обробкі дадзеных і правілы ўтрымання іх. Змена адных не павінна вымагаць перапісву іншых, калі зменяюцыся паказателі якосці. Як запускаць? Цей падчынак працуе найкраща, калі яго расследжваць як вимерную плошчу. Зберагачыце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна быць асоўваная з адной конкрэтнаяя відпаведальнасцю, а не з заплутанай сэріяй крокаў.

livekit-server --dev
LIVEKIT_URL=ws://localhost:7880
LIVEKIT_API_KEY=devkey
LIVEKIT_API_SECRET=secret
python voice_agent.py console

Рэзультаты эксперыменту

Для рэзультатаў эксперыменту неабходна перад змянай коду задаць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння. Аперацыяныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяць гэтам этапу як кантракту межа вхіднымі данымі і падтвердзенымі выходнымі рэзультатамі. Даць назвы артыфактам, задаць перакананні ў успеху і адмовіцца ад беззвучнага частковага завершэння. Цітаваць тыя часткі, якія фактычна лежалі в основе адпаведнай адказы. Без цітатаў аперацыяныя працавнікі не можу разлічыць галюцинацію ад прасоў у індэксаванні.

╭─    ~/Pavans/Workshops/s2s_agents/livekit_observability  on   main !3 ?84 ···························································· ✔  s2s_agents   base   at 08:15:41 AM 
╰─ python agent_with_mlflow_observability.py console
/Users/pavanmantha/Pavans/Workshops/s2s_agents/livekit_observability/agent_with_mlflow_observability.py:30: UserWarning: Api key is used with an insecure connection.
  client = QdrantClient(url="http://localhost:6333", api_key="th3s3cr3tk3y")
/Users/pavanmantha/Pavans/Workshops/s2s_agents/livekit_observability/agent_with_mlflow_observability.py:31: UserWarning: Api key is used with an insecure connection.
  aclient = AsyncQdrantClient(url="http://localhost:6333", api_key="th3s3cr3tk3y")
    Agents   Starting console mode 🚀

DEBUG:asyncio:Using selector: KqueueSelector
    08:15:55.965 DEBUG    asyncio            Using selector: KqueueSelector
INFO:livekit.agents:starting worker
    08:15:55.967 INFO     livekit.agents     starting worker {"version": "1.6.7", "rtc-version": "1.1.13"}
INFO:livekit.agents:plugin registered
                 INFO     livekit.agents     plugin registered {"plugin": "livekit.plugins.openai", "version": "1.6.7"}
INFO:livekit.agents:plugin registered
    08:15:55.968 INFO     livekit.agents     plugin registered {"plugin": "livekit.plugins.silero", "version": "1.6.7"}
INFO:livekit.agents:plugin registered
                 INFO     livekit.agents     plugin registered {"plugin": "livekit.plugins.cartesia", "version": "1.6.7"}
INFO:livekit.agents:HTTP server listening on :63907
    08:15:55.969 INFO     livekit.agents     HTTP server listening on :63907
/Users/pavanmantha/Pavans/Workshops/s2s_agents/.venv/lib/python3.12/site-packages/jwt/api_jwt.py:147: InsecureKeyLengthWarning: The HMAC key is 6 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
  return self._jws.encode(
WARNING:livekit.agents:no warmed process available for job, waiting for one to be created
    08:15:55.985 WARNING  livekit.agents     no warmed process available for job, waiting for one to be created {"job_id": "mock-job-dfd2d7a8afa9"}
INFO:livekit.agents:initializing job runner
    08:15:55.986 INFO     livekit.agents     initializing job runner {"tid": 27303873}
INFO:voice-agent:MLflow tracing configured successfully!
    08:15:55.988 INFO     voice-agent        MLflow tracing configured successfully!
INFO:voice-agent:Prewarmed VAD model
    08:15:56.059 INFO     voice-agent        Prewarmed VAD model
DEBUG:asyncio:Using selector: KqueueSelector
INFO:livekit.agents:job runner initialized
    08:15:56.060 DEBUG    asyncio            Using selector: KqueueSelector
                 INFO     livekit.agents     job runner initialized {"tid": 27303873, "elapsed_time": 0.07}
INFO:voice-agent:Agent starting for room: console
    08:15:56.078 INFO     voice-agent        Agent starting for room: console
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:15:56.469 DEBUG    livekit.agents     http_session(): creating a new httpclient ctx
/Users/pavanmantha/Pavans/Workshops/s2s_agents/.venv/lib/python3.12/site-packages/jwt/api_jwt.py:147: InsecureKeyLengthWarning: The HMAC key is 6 bytes long, which is below the minimum
recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2.
  return self._jws.encode(
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:15:56.513 DEBUG    livekit.agents     using audio io: `Console` -> `AgentSession` -> `TranscriptSynchronizer` -> `AudioSinkProxy` -> `Console`
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:15:56.514 DEBUG    livekit.agents     using transcript io: `AgentSession` -> `TranscriptSynchronizer`
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:15:56.515 INFO     voice-agent        Agent session started! Ready for conversation.
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:15:56.673 DEBUG    livekit.….cartesia Established new Cartesia STT WebSocket connection {"cartesia_request_id": "55dd9277-c7ff-4aaf-994f-c5e234200b90"}
   MacBook Pro Microphone   ▁ ▁ ▁ ▂ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:15:56.687 DEBUG    livekit.….cartesia Established new Cartesia TTS WebSocket connection {"cartesia_request_id": "b0e833e0-1838-4282-a812-5e1d0c3eaa45"}
   MacBook Pro Microphone   ▁ ▁ ▁ ▆ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:15:56.744 WARNING  livekit.agents     cloud turn detector failed (message='Invalid response status (401 Unauthorized)', status_code=401, retryable=False); falling back to local mini
                                             model
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:16:04.410 DEBUG    livekit.agents     received user preflight transcript {"user_transcript": "What does FHA section 223 F of housing act provide for?", "language": "en"}
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:16:04.633 DEBUG    livekit.agents     received user transcript
                                         {"user_transcript": "What does FHA section 223 F of housing act provide for?", "language": "en", "transcript_delay": 1.0138118267059326}
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:16:04.636 DEBUG    livekit.agents     eot prediction
                                         {"probability": 0.7253056168556213, "unlikely_threshold": 0.36, "endpointing_delay": 0.3, "language": "en", "trigger": "stt", "from_cache": true}
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:16:04.639 DEBUG    livekit.agents     user turn committed
                                         {"last_speaking_time": 1786848363.619498, "last_final_transcript_time": 1786848364.63628, "speech_start_time": 1786848358.330898, "delay_completed":
false, "source": "stt", "end_of_turn_probability": 0.7253056168556213, "unlikely_threshold": 0.36}
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:16:04.643 DEBUG    livekit.agents     using preemptive generation {"preemptive_lead_time": 0.22996997833251953}
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:16:04.646 DEBUG    livekit.agents     conversation_item_added {"role": "user", "text": "What does FHA section 223 F of housing act provide for?"}
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:16:05.943 DEBUG    livekit.agents     executing tool {"function": "query_info", "arguments": "{\"query\": \"FHA section 223 F of housing act\"}", "speech_id": "speech_c521790e881a"}
query: FHA section 223 F of housing act
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

   ? for shortcuts                                                                                                                                                                             DEBUG:llama_index.core.indices.utils:> Top 20 nodes:
> [Node d8308013-6aa4-4c16-8389-6f50d2669512] [Similarity score:                 0.634752] Section 223(a)(7) (Refinancing of FHA-Insured Mortgages). Section 223(a)(7) of the Housing Act pe...
> [Node 32cfb8da-d14d-427e-9bfa-308fb4f2a9cc] [Similarity score:                 0.586968] Sections 213 and 213(i) of the Housing Act provides for FHA insurance of mortgage loans on cooper...
> [Node 9381a6ec-23c0-4278-8e1b-7401d60e1001] [Similarity score:                 0.551707] Such projects may have been financed originally with conventional or FHA-insured mortgage loans.
...
> [Node 786cec8d-0e08-4cff-b00a-94e1b61e98dc] [Similarity score:                 0.499063] Section 236 of the Housing Act combines governmental mortgage insurance on multifamily housing pr...
> [Node 1f472f42-614b-45a8-86a1-138e21a89922] [Similarity score:                 0.483326] Mortgage Loans insured under the programs described in the related Offering Circular Supplement h...
> [Node 03d4c561-aa8c-4033-b8c7-fa3c28a89cf9] [Similarity score:                 0.388449] Each Ginnie Mae Project Loan Certificate will provide for the payment to the registered holder of...
> [Node f7927814-6be4-472b-9c96-51389a9ba8b5] [Similarity score:                 0.370135] ---

### 📄 Page 78

**Weighted Average Remaining Period from Issuance** — With respect to designa...
> [Node 3b62d0f1-a471-455b-ba2a-ed31950b2b5b] [Similarity score:                 0.361758] A corporation will not be treated as an instrumentality of the United States or any state or poli...
> [Node fcc56c3d-1f91-4004-beb4-19985b765d5e] [Similarity score:                 0.354325] **Prepayment Penalty End Date** — With respect to any multifamily Mortgage Loan, the date as of w...
> [Node 86415b5d-c93a-42d2-b185-0ecaea1150f3] [Similarity score:                 0.348899] If the prepayment rate on the Mortgage Loans decreases during a period of rising interest rates, ...
> [Node 59725d69-37a2-4ee7-a016-9cc9d0ac9dba] [Similarity score:                 0.347137] ---

### 📄 Page 20

### Section 538 Guarantee Program

The Section 538 Guaranteed Rural Rental Ho...
> [Node 6acc230f-5014-4423-8258-22269b50b418] [Similarity score:                 0.344156] If any of these representations and warranties are untrue with respect to any Trust MBS, the Spon...
> [Node 3a9de742-ca46-4570-8dcd-45e33c6b3792] [Similarity score:                 0.342905] 00 exceeds (b) the product of (i) the original principal amount of the Ginnie Mae Project Loan Ce...
> [Node fe0dd607-31e3-4533-b902-1ce1a38002db] [Similarity score:                 0.337367] Certain Trust MBS may be based on and backed by Mortgage Loans secured by a mark-to-market projec...
> [Node 02720481-a4c1-4377-8745-9d432d75621a] [Similarity score:                 0.334485] The original maturity of a Ginnie Mae Construction Loan Certificate is at least 200% of the const...
> [Node 8143abb0-2e8a-4a4c-b401-6a64d3fc47cc] [Similarity score:                 0.331362] The Trust Asset Depository or its nominees, as registered holder (on behalf of the Trustee) of th...
> [Node 2893b0c6-b1d0-40b8-9102-4f77eca8822c] [Similarity score:                 0.329946] Any transfer of a Mortgaged Property is subject to HUD review and approval under the terms of HUD...
> [Node 1f830d75-a35d-422a-a0f8-84fa1a7f283f] [Similarity score:                 0.327878] An election will be made to treat each Trust or certain assets of each Trust as one or more real ...
    08:16:06.202 DEBUG    llama_in…ces.utils > Top 20 nodes:
                                             > [Node d8308013-6aa4-4c16-8389-6f50d2669512] [Similarity score:                 0.634752] Section 223(a)(7) (Refinancing of FHA-Insured
                                             Mortgages). Section 223(a)(7) of the Housing Act pe...
                                             > [Node 32cfb8da-d14d-427e-9bfa-308fb4f2a9cc] [Similarity score:                 0.586968] Sections 213 and 213(i) of the Housing Act provides
                                             for FHA insurance of mortgage loans on cooper...
                                             > [Node 9381a6ec-23c0-4278-8e1b-7401d60e1001] [Similarity score:                 0.551707] Such projects may have been financed originally with
                                             conventional or FHA-insured mortgage loans.
                                             ...
                                             > [Node 786cec8d-0e08-4cff-b00a-94e1b61e98dc] [Similarity score:                 0.499063] Section 236 of the Housing Act combines governmental
                                             mortgage insurance on multifamily housing pr...
                                             > [Node 1f472f42-614b-45a8-86a1-138e21a89922] [Similarity score:                 0.483326] Mortgage Loans insured under the programs described
                                             in the related Offering Circular Supplement h...
                                             > [Node 03d4c561-aa8c-4033-b8c7-fa3c28a89cf9] [Similarity score:                 0.388449] Each Ginnie Mae Project Loan Certificate will provide
                                             for the payment to the registered holder of...
                                             > [Node f7927814-6be4-472b-9c96-51389a9ba8b5] [Similarity score:                 0.370135] ---

                                             ### 📄 Page 78

                                             **Weighted Average Remaining Period from Issuance** — With respect to designa...
                                             > [Node 3b62d0f1-a471-455b-ba2a-ed31950b2b5b] [Similarity score:                 0.361758] A corporation will not be treated as an
                                             instrumentality of the United States or any state or poli...
                                             > [Node fcc56c3d-1f91-4004-beb4-19985b765d5e] [Similarity score:                 0.354325] **Prepayment Penalty End Date** — With respect to any
                                             multifamily Mortgage Loan, the date as of w...
                                             > [Node 86415b5d-c93a-42d2-b185-0ecaea1150f3] [Similarity score:                 0.348899] If the prepayment rate on the Mortgage Loans
                                             decreases during a period of rising interest rates, ...
                                             > [Node 59725d69-37a2-4ee7-a016-9cc9d0ac9dba] [Similarity score:                 0.347137] ---

                                             ### 📄 Page 20

                                             ### Section 538 Guarantee Program

                                             The Section 538 Guaranteed Rural Rental Ho...
                                             > [Node 6acc230f-5014-4423-8258-22269b50b418] [Similarity score:                 0.344156] If any of these representations and warranties are
                                             untrue with respect to any Trust MBS, the Spon...
                                             > [Node 3a9de742-ca46-4570-8dcd-45e33c6b3792] [Similarity score:                 0.342905] 00 exceeds (b) the product of (i) the original
                                             principal amount of the Ginnie Mae Project Loan Ce...
                                             > [Node fe0dd607-31e3-4533-b902-1ce1a38002db] [Similarity score:                 0.337367] Certain Trust MBS may be based on and backed by
                                             Mortgage Loans secured by a mark-to-market projec...
                                             > [Node 02720481-a4c1-4377-8745-9d432d75621a] [Similarity score:                 0.334485] The original maturity of a Ginnie Mae Construction
                                             Loan Certificate is at least 200% of the const...
                                             > [Node 8143abb0-2e8a-4a4c-b401-6a64d3fc47cc] [Similarity score:                 0.331362] The Trust Asset Depository or its nominees, as
                                             registered holder (on behalf of the Trustee) of th...
                                             > [Node 2893b0c6-b1d0-40b8-9102-4f77eca8822c] [Similarity score:                 0.329946] Any transfer of a Mortgaged Property is subject to
                                             HUD review and approval under the terms of HUD...
                                             > [Node 1f830d75-a35d-422a-a0f8-84fa1a7f283f] [Similarity score:                 0.327878] An election will be made to treat each Trust or
                                             certain assets of each Trust as one or more real ...
                                             > [Node 16478aeb-8d79-4294-9011-918e57601e17] [Similarity score:                 0.326987] The Information Agent identified in the Offering
                                             Circular Supplement will post the Class Factors,...
                                             > [Node b933dd07-7423-4f11-bcd2-6c6ec1062ccc] [Similarity score:                 0.323226] At any time following the final endorsement of a
                                             Mortgage Loan and upon satisfaction of the prere...
Query result: Section 223(a)(7) (Refinancing of FHA-Insured Mortgages). Section 223(a)(7) of the Housing Act permits FHA to refinance existing insured mortgage loans under any section or
title of the Housing Act. Such refinancing results in prepayment of the existing insured mortgage. The new, refinanced mortgage loan is limited to the original principal amount of the
existing mortgage loan and the unexpired term of the existing mortgage loan plus 12 years.

Section 223(d)(Operating Loss Loans). Section 223(d) of the Housing Act provides for FHA insurance of separate loans that cover (1) operating losses during the first 2 years after completion
or (2) up to 80% of the unreimbursed cash contributions by the project owner during any period of up to two years within the first 10 years after date of completion of the project. The
project must be secured by an existing HUD-insured first mortgage loan.

Section 223(f) (Purchase or Refinancing of Existing Projects). Section 223(f) of the Housing Act provides for federal insurance of mortgage loans originated by FHA-approved lenders in
connection with the purchase or refinancing of existing multifamily housing complexes, hospitals and nursing homes that do not require substantial rehabilitation. The principal objective of
the Section 223(f) program is to permit the refinancing of mortgage loans to provide for a lower debt service or the purchase of existing properties in order to preserve an adequate supply of
affordable rental housing. Such projects may have been financed originally with conventional or FHA-insured mortgage loans.

Section 231 (Mortgage Insurance for Rental Housing for the Elderly). Section 231 of the Housing Act provides for insurance of mortgage loans to facilitate the construction and substantial
rehabilitation of multifamily rental housing for elderly (62 or older) or disabled persons. The mortgage insurance may be used to finance the construction and substantial rehabilitation of
detached, semi-detached, walk-up or elevator type rental housing designed specifically for elderly or disabled individuals consisting of 8 or more dwelling units. Section 231 was designed to
increase the supply of rental housing specifically for the use and occupancy of elderly and/or disabled persons.

Section 232 (Mortgage Insurance for Nursing Homes, Immediate Care Facilities and Board and Care Homes).
Query result: Sections 213 and 213(i) of the Housing Act provides for FHA insurance of mortgage loans on cooperative housing projects. Sections 213 and 213(i) mortgage insurance enables
nonprofit cooperative ownership housing corporations or trusts to develop or sponsor housing projects that will be operated as cooperatives. By using Sections 213 and 213(i) insurance,
investors can construct or rehabilitate multifamily housing that will be sold to such nonprofit corporations or trusts.

Section 220 (Urban Renewal Mortgage Insurance). Section 220 of the Housing Act provides for federal insurance of mortgage loans on multifamily rental projects located in federally aided urban
renewal areas or in areas having a local redevelopment or urban renewal plan certified by FHA. The mortgage loans may finance the rehabilitation of existing salvable housing (including the
refinancing of existing loans) or new construction in targeted areas. The purpose of Section 220 is to encourage quality rental housing in urban areas targeted for overall revitalization.

---

### 📄 Page 19

Section 221(d) (Housing for Moderate Income and Displaced Families). Sections 221(d)(3) and 221(d)(4) of the Housing Act provide for mortgage insurance to assist private industry in the
construction or substantial rehabilitation of rental and cooperative housing for low- and moderate-income families and families that have been displaced as a result of urban renewal,
governmental actions or disaster.

Section 223(a)(7) (Refinancing of FHA-Insured Mortgages). Section 223(a)(7) of the Housing Act permits FHA to refinance existing insured mortgage loans under any section or title of the
Housing Act. Such refinancing results in prepayment of the existing insured mortgage. The new, refinanced mortgage loan is limited to the original principal amount of the existing mortgage
loan and the unexpired term of the existing mortgage loan plus 12 years.

Section 223(d)(Operating Loss Loans). Section 223(d) of the Housing Act provides for FHA insurance of separate loans that cover (1) operating losses during the first 2 years after completion
or (2) up to 80% of the unreimbursed cash contributions by the project owner during any period of up to two years within the first 10 years after date of completion of the project. The
project must be secured by an existing HUD-insured first mortgage loan.
Query result: Such projects may have been financed originally with conventional or FHA-insured mortgage loans.

Section 231 (Mortgage Insurance for Rental Housing for the Elderly). Section 231 of the Housing Act provides for insurance of mortgage loans to facilitate the construction and substantial
rehabilitation of multifamily rental housing for elderly (62 or older) or disabled persons. The mortgage insurance may be used to finance the construction and substantial rehabilitation of
detached, semi-detached, walk-up or elevator type rental housing designed specifically for elderly or disabled individuals consisting of 8 or more dwelling units. Section 231 was designed to
increase the supply of rental housing specifically for the use and occupancy of elderly and/or disabled persons.

Section 232 (Mortgage Insurance for Nursing Homes, Immediate Care Facilities and Board and Care Homes). Section 232 of the Housing Act provides for FHA insurance of private construction
mortgage loans to finance new or rehabilitated nursing homes, intermediate care facilities, board and care homes, assisted living for the frail or elderly or allowable combinations thereof,
including equipment to be used in their operation. Section 232 also provides for supplemental loans to finance the purchase and installation of fire safety equipment in these facilities.

Section 236 (Mortgage Insurance for Subsidized Rental Housing Projects). Section 236 of the Housing Act combines governmental mortgage insurance on multifamily housing projects with
supplemental payments to reduce the project owners' monthly debt service payments. The supplemental payments are paid directly to the mortgagee of the project for the purpose of reducing the
interest payment due from the project owner. The objective of these supplemental payments is to reduce rental payments required of low-income and elderly residents. To qualify for rental
assistance under Section 236, tenants' annual income must be less than 80 percent of the median income of the area. Originations under Section 236 are no longer active, although refinancings
under Section 223(a)(7) are authorized.

Section 241 (Supplemental Loans for Multifamily Projects). Sections 241, and 241(a) and 241(f) of the Housing Act provide for FHA insurance to finance property improvements, energy-conserving
improvements, supplemental increases or additions to any FHA-insured multifamily loan.
Query result: Section 236 of the Housing Act combines governmental mortgage insurance on multifamily housing projects with supplemental payments to reduce the project owners' monthly debt
service payments. The supplemental payments are paid directly to the mortgagee of the project for the purpose of reducing the interest payment due from the project owner. The objective of
these supplemental payments is to reduce rental payments required of low-income and elderly residents. To qualify for rental assistance under Section 236, tenants' annual income must be less
than 80 percent of the median income of the area. Originations under Section 236 are no longer active, although refinancings under Section 223(a)(7) are authorized.

Section 241 (Supplemental Loans for Multifamily Projects). Sections 241, and 241(a) and 241(f) of the Housing Act provide for FHA insurance to finance property improvements, energy-conserving
improvements, supplemental increases or additions to any FHA-insured multifamily loan. The overall purpose of the Section 241 loan program is to provide a project with a means to remain
competitive, to extend its economic life and to finance the replacement of obsolete equipment without the refinancing of the existing mortgage.

---

### 📄 Page 20

### Section 538 Guarantee Program

The Section 538 Guaranteed Rural Rental Housing Program is under the United States Department of Agriculture Rural Development. The authorizing statute is Title V of the Housing Act. Rural
Development operates a broad range of programs that were formerly administered by the Farmers Home Administration to support affordable housing and community development in rural areas.
Section 538 was established pursuant to Title V of the Housing Act. Section 538 is designed to increase the supply of affordable rural rental housing, through the use of loan guarantees that
encourage partnerships between Rural Development, private lenders and public agencies. Mortgage loans are provided by Rural Development-approved multifamily lenders, including state and local
housing agencies. The Mortgage Loans guaranteed under the program will have the maturity and amortization features as Rural Development may approve.
Query result: Mortgage Loans insured under the programs described in the related Offering Circular Supplement have such maturities and amortization features as the FHA may approve. Generally
the minimum mortgage loan term is at least ten years, and the maximum mortgage loan term does not exceed the lesser of 40 years and 75% of the estimated remaining economic life of the
improvements on the Mortgaged Property.

Tenant eligibility for FHA-insured projects generally is not restricted by income, except for projects as to which rental subsidies are made available with respect to some of or all the units
therein or to specified tenants.

The principal characteristics of the Mortgage Loans underlying the Ginnie Mae Multifamily Certificates in a particular Trust, and the FHA Programs under which each Mortgage Loan is insured,
are described below. The FHA Programs under which each Mortgage Loan in a Series is insured will be listed under "Terms Sheets – Certain Characteristics of the Ginnie Mae Multifamily
Certificates and the Related Mortgage Loans Underlying the Trust Assets" in the related Offering Circular Supplement.

Section 207 (Mortgage Insurance for Multifamily Housing). Section 207 of the Housing Act provides for federal insurance of mortgage loans originated by FHA-approved lenders in connection with
the construction or substantial rehabilitation of multifamily housing projects, which includes manufactured home parks.

Section 213(i) (Cooperative Housing Projects). Sections 213 and 213(i) of the Housing Act provides for FHA insurance of mortgage loans on cooperative housing projects. Sections 213 and 213(i)
mortgage insurance enables nonprofit cooperative ownership housing corporations or trusts to develop or sponsor housing projects that will be operated as cooperatives. By using Sections 213
and 213(i) insurance, investors can construct or rehabilitate multifamily housing that will be sold to such nonprofit corporations or trusts.

Section 220 (Urban Renewal Mortgage Insurance). Section 220 of the Housing Act provides for federal insurance of mortgage loans on multifamily rental projects located in federally aided urban
renewal areas or in areas having a local redevelopment or urban renewal plan certified by FHA. The mortgage loans may finance the rehabilitation of existing salvable housing (including the
refinancing of existing loans) or new construction in targeted areas. The purpose of Section 220 is to encourage quality rental housing in urban areas targeted for overall revitalization.
Query result: Each Ginnie Mae Project Loan Certificate will provide for the payment to the registered holder of that Ginnie Mae Project Loan Certificate of monthly payments of principal and
interest equal to the aggregate amount of

---

### 📄 Page 18

the scheduled monthly principal and interest payments on the Mortgage Loans underlying that Ginnie Mae Project Loan Certificate, less applicable servicing and guaranty fees. In addition, such
payments will include any prepayments and other unscheduled recoveries of principal of, and any Prepayment Penalties on, an underlying Mortgage Loan to the extent received by the Ginnie Mae
Issuer during the month preceding the month of the payment.

The related Offering Circular Supplement will describe certain characteristics of the Ginnie Mae Project Loan Certificates and the underlying Mortgage Loans.

### FHA Insurance Programs

The FHA is an organizational unit within the U.S. Department of Housing and Urban Development. FHA was established to encourage improvement in housing standards and conditions, to provide an
adequate home financing system by insuring housing mortgages and credit and to exert a stabilizing influence on the mortgage market.

FHA multifamily insurance programs generally are designed to assist private and public mortgagors in obtaining insured financing for the construction, purchase or rehabilitation of
multifamily housing pursuant to the Housing Act or, with respect to a risk sharing pilot program, the Housing and Community Development Act of 1992, as amended. Mortgage Loans are provided by
FHA-approved institutions, which include mortgage banks, commercial banks, savings and loan associations, trust companies, insurance companies, pension funds, state and local housing finance
agencies and certain other approved entities.

Mortgage Loans insured under the programs described in the related Offering Circular Supplement have such maturities and amortization features as the FHA may approve. Generally the minimum
mortgage loan term is at least ten years, and the maximum mortgage loan term does not exceed the lesser of 40 years and 75% of the estimated remaining economic life of the improvements on the
Mortgaged Property.

Tenant eligibility for FHA-insured projects generally is not restricted by income, except for projects as to which rental subsidies are made available with respect to some of or all the units
therein or to specified tenants.

The principal characteristics of the Mortgage Loans underlying the Ginnie Mae Multifamily Certificates in a particular Trust, and the FHA Programs under which each Mortgage Loan is insured,
are described below.
Query result: ---

### 📄 Page 78

**Weighted Average Remaining Period from Issuance** — With respect to designated Ginnie Mae Multifamily Certificates and a Cut-off Date, the average, expressed in months, of the remaining
period from issuance, as of the Cut-off Date, of all the Mortgage Loans underlying the Ginnie Mae Multifamily Certificates, weighted on the basis of the respective current principal balances
of those Mortgage Loans after giving effect to all payments of principal due on or before the Cut-off Date. For purposes of this definition "issuance" means the later of (a) one month prior
to the first interest rate payment date after the most recent FHA endorsement and (b) the Cut-off Date of the related Ginnie Mae Multifamily Certificate, unless otherwise indicated in the
Offering Circular Supplement.

**Weighted Average Remaining Prepayment Penalty Period** — With respect to designated Ginnie Mae Multifamily Certificates and a Cut-off Date, the average, expressed in months, of the
remaining periods during which Prepayment Penalties will be payable, as of the Cut-off Date, of all the Mortgage Loans underlying the Ginnie Mae Multifamily Certificates, weighted on the
basis of the respective current principal balances of those Mortgage Loans after giving effect to all payments of principal due on or before the related Cut-off Date.

---

### 📄 Page 79

## THIS PAGE INTENTIONALLY LEFT BLANK
Query result: A corporation will not be treated as an instrumentality of the United States or any state or political subdivision thereof if all of its activities are subject to tax and, with
the exception of Freddie Mac, a majority of its board of directors is not selected by that governmental unit.

**Distribution Amount** — With respect to each Series (or, if the Series is segregated into Security Groups, each Security Group) and each Distribution Date, the sum of the Principal
Distribution Amount (less principal, if any, payable to the Trustee as a Trustee Fee), the Interest Distribution Amount and the Accrual Amount(s), if any, for the Series (or Security Group).

---

### 📄 Page 59

**Distribution Date** — The date specified in the Trust Agreement or MX Trust Agreement, as applicable, relating to each Series (or Security Group) upon which distributions are required to be
made to Holders of Securities of such Series (or Security Group).

**Double REMIC Series** — A Series that provides for an Issuing REMIC and one or more Pooling REMICs.

**Effective Range** — With respect to any PAC, Scheduled or TAC Class or Component, the range of constant prepayment rates for which such Class or Component adheres to its schedule of
Scheduled Principal Balances.

**Eligible Certificates** — Any Ginnie Mae Securities, as well as any Fannie Mae Securities or Freddie Mac Securities that are held in book-entry form.

ERISA ................................................. The Employee Retirement Income Security Act of 1974, as amended.

**Excess Class** — A Class that receives any principal and interest paid on the underlying Trust Assets in excess of the amount of the prescribed principal and interest required to be paid on
all Classes in the Series.

Fannie Mae.......................................... The Federal National Mortgage Association.

**Fannie Mae Securities** — Any securities previously issued and guaranteed by Fannie Mae that evidence beneficial ownership interests in Ginnie Mae Multifamily Certificates.

**Fedwire Book-Entry System** — The book-entry system for securities operated and maintained by the U.S. Federal Reserve Banks.

FHA .................................................... The Federal Housing Administration.

FHLB of San Francisco....................... The Federal Home Loan Bank of San Francisco.

**Final Data Statement** — With respect to each Series, the final list of Trust Assets to be included in the related Trust.
Query result: **Prepayment Penalty End Date** — With respect to any multifamily Mortgage Loan, the date as of which any such Mortgage Loan would no longer be subject to the payment of any
Prepayment Penalties.

**Principal Distribution Amount** — With respect to each Series (or if the Series is segregated into Security Groups, each Security Group) and each Distribution Date, the sum of (I) with
respect to each Ginnie Mae Multifamily Certificate (other than any Ginnie Mae Project Loan Certificate issued as a result of a conversion of the Ginnie Mae Construction Loan Certificate since
the preceding Distribution Date), the amount by which (a) the product of (i) the original principal amount of that Ginnie Mae Multifamily Certificate and (ii) the Certificate Factor,
Corrected Certificate Factor or Calculated Certificate Factor, as applicable, for the preceding Distribution Date exceeds (b) the product of (i) the original principal amount of the Ginnie
Mae Multifamily Certificate and (ii) the

---

### 📄 Page 68

Certificate Factor, Corrected Certificate Factor or Calculated Certificate Factor, as applicable, for the current Distribution Date; (II) with respect to each Ginnie Mae Project Loan
Certificate issued as a result of a conversion of a Ginnie Mae Construction Loan Certificate since the preceding Distribution Date, the sum of (1) the amount by which (a) the product of (i)
the original principal amount of the Ginnie Mae Project Loan Certificate and (ii) 1.00 exceeds (b) the product of (i) the original principal amount of the Ginnie Mae Project Loan Certificate
and (ii) the Certificate Factor, Corrected Certificate Factor or Calculated Certificate Factor, as applicable, for the current Distribution Date and (2) any amounts received by the Trust from
the Ginnie Mae Issuer from the related P&I Custodial Account on the date of conversion of a Ginnie Mae Construction Loan Certificate to a Ginnie Mae Project Loan Certificate; (III) with
respect to each Ginnie Mae Construction Loan Certificate that has been liquidated since the preceding Distribution Date, any proceeds received by the Trust from the Ginnie Mae Issuer with
respect to any liquidation, exclusive of any amounts distributed pursuant to (I) above; (IV) with respect to each Underlying Certificate, Underlying Callable Security or Underlying SMBS
Security,
Query result: If the prepayment rate on the Mortgage Loans decreases during a period of rising interest rates, investors may receive declining principal distributions when those investors
otherwise may have been able to reinvest at higher interest rates than the Interest Rates of the applicable Classes of Securities.

### Payment Delay

Distributions of interest on the Securities on any Distribution Date will include interest accrued thereon through the Accounting Date, which for Fixed Rate Classes and Delay Classes is the
last day of the month preceding the month in which such Distribution Date occurs. The effective yield to the Holders of such Securities will be lower than the yield otherwise produced by the
applicable Interest Rate and purchase price because interest will not be distributed on such Securities that are Book-Entry Securities until the Distribution Date in the month following the
month in which such interest accrues on the Trust Assets, and interest will not be distributed on Certificated Securities until the Business Day after such Distribution Date.

---

### 📄 Page 22

### Assumability of Mortgage Loans

Mortgage Loans do not contain "due-on-sale" clauses restricting sale or other transfer of the related Mortgaged Properties. Any transfer of a Mortgaged Property is subject to HUD review and
approval under the terms of HUD's Regulatory Agreement with the owner, which is incorporated by reference into the mortgage.

### Weighted Average Life

The Weighted Average Life of a security refers to the average amount of time that will elapse from the date of its issuance until each dollar of principal of that security will be repaid to
the investor. As a result, any projection of the Weighted Average Life of and yield on any Class of the Securities must include an assumption about the anticipated timing and amount of
payments on those Securities, which will depend upon the rate of prepayments of the Mortgage Loans, including optional borrower prepayments and prepayments resulting from liquidation of
defaulted Mortgage Loans. In general, prepayments of principal and defaults on the Mortgage Loans will shorten the Weighted Average Life and term to maturity of each related Class of
Securities.
Query result: ---

### 📄 Page 20

### Section 538 Guarantee Program

The Section 538 Guaranteed Rural Rental Housing Program is under the United States Department of Agriculture Rural Development. The authorizing statute is Title V of the Housing Act. Rural
Development operates a broad range of programs that were formerly administered by the Farmers Home Administration to support affordable housing and community development in rural areas.
Section 538 was established pursuant to Title V of the Housing Act. Section 538 is designed to increase the supply of affordable rural rental housing, through the use of loan guarantees that
encourage partnerships between Rural Development, private lenders and public agencies. Mortgage loans are provided by Rural Development-approved multifamily lenders, including state and local
housing agencies. The Mortgage Loans guaranteed under the program will have the maturity and amortization features as Rural Development may approve.

Tenant eligibility for Section 538 guaranteed projects is restricted to persons with income not in excess of 115% of the area median income

Under Section 515 of Title V of the Housing Act, Rural Development is authorized to make direct loans secured by multifamily properties with respect to which the tenants may include very
low-, low- and moderate-income families, elderly persons and persons with handicaps and disabilities. Under Section 538, Rural Development subsequently may guarantee new loans, secured by the
same properties, made to revitalize the properties.

## UNDERLYING CERTIFICATES

If so specified in the related Offering Circular Supplement, the Trust Assets for a Series of Securities may include one or more Underlying Certificates. Any such Underlying Certificate will
evidence a direct or indirect beneficial ownership interest in a separate pool of Ginnie Mae Multifamily Certificates and will have been issued and guaranteed as described in the Underlying
Certificate Disclosure Document. Each Offering Circular Supplement will include a general description of the characteristics of each Underlying Certificate. In the event that any issue arises
under the trust agreement that governs the Underlying Trust, which requires a vote of the holders of Underlying Certificates, the Trustee will vote the Underlying Certificates in accordance
with the Trust Agreement.

Investors in any Security representing an interest in one or more Underlying Certificates are urged to review, in particular, the related Underlying Certificate Disclosure Documents, which
may be obtained from the Information Agent as described in the related Offering Circular Supplement.
Query result: If any of these representations and warranties are untrue with respect to any Trust MBS, the Sponsor, at its option, may (a) cure the breach, (b) substitute another Ginnie Mae
Multifamily Certificate for the affected Trust MBS, or (c) with Ginnie Mae's consent, repurchase the affected Trust MBS from the Trust, in each case only to the extent permitted under the
Trust Agreement and REMIC Provisions.

The Mortgage Loans underlying each Trust MBS will consist of Mortgage Loans secured by mortgages on real properties that are either residences housing five families or more or nursing
facilities (collectively, "Mortgaged Properties").

---

### 📄 Page 16

Each multifamily Mortgage Loan underlying any Trust MBS (other than a Trust MBS issued under the Small Loan Program (as defined below under "The Ginnie Mae Project Loan Certificates")) bears
interest at a Mortgage Rate that is 0.25% to 0.50% per annum greater than the related Certificate Rate, unless Ginnie Mae has given its prior consent to a spread in excess of 0.50% per annum.
Under the Small Loan Program, the Mortgage Rate on the Mortgage Loans backing the Trust MBS is required to be at least 0.50% greater than the Certificate Rate, but there is no maximum limit
on this percentage. Certain Trust MBS may be based on and backed by Mortgage Loans secured by a mark-to-market project developed under HUD's Office of Multifamily Housing Assistance
Restructuring Processing Procedures (the "RX Program"). The Mortgage Rate of Mortgage Loans underlying any such Trust MBS is required to be at least 0.50% greater than the Certificate Rate of
the related Trust MBS.

Each Ginnie Mae Issuer will perform the routine functions required for servicing of Trust MBS and related Mortgage Loans for which it is responsible, including mortgagor billings, receipt and
posting of payments, payment of property taxes and hazard insurance premiums, remittance, collections and customer service. Each Ginnie Mae Issuer will be obligated under its Certificate
Guaranty Agreements with Ginnie Mae to service the Mortgage Loans in accordance with FHA requirements and with generally accepted practices in the mortgage lending industry.
Query result: 00 exceeds (b) the product of (i) the original principal amount of the Ginnie Mae Project Loan Certificate and (ii) the Certificate Factor, Corrected Certificate Factor or
Calculated Certificate Factor, as applicable, for the current Distribution Date and (2) any amounts received by the Trust from the Ginnie Mae Issuer from the related P&I Custodial Account on
the date of conversion of a Ginnie Mae Construction Loan Certificate to a Ginnie Mae Project Loan Certificate; (III) with respect to each Ginnie Mae Construction Loan Certificate that has
been liquidated since the preceding Distribution Date, any proceeds received by the Trust from the Ginnie Mae Issuer with respect to any liquidation, exclusive of any amounts distributed
pursuant to (I) above; (IV) with respect to each Underlying Certificate, Underlying Callable Security or Underlying SMBS Security, the amount by which (a) the product of (i) the original
principal amount of that Underlying Certificate, Underlying Callable Security or Underlying SMBS Security, and (ii) the Underlying Certificate Factor (or Certificate Factor) for the preceding
Distribution Date exceeds (b) the product of (i) the original principal amount of the Underlying Certificate, Underlying Callable Security or Underlying SMBS Security, and (ii) the Underlying
Certificate Factor (or Certificate Factor) for the current Distribution Date; provided however, that the amount calculated pursuant to clause (IV) is subject to adjustment pursuant to the
applicable Trust Agreement in the event that Underlying Certificate Factors (or Certificate Factors) are unavailable in respect of any Distribution Date. (For the first Distribution Date, the
product in clause (I)(a) and (IV)(a) above shall be the principal amount of the Ginnie Mae Multifamily Certificate as of the Closing Date.) The sum of the amounts so calculated for each
Ginnie Mae Multifamily Certificate conveyed to a Trust for a Series (or, if the Series is segregated into Security Groups, for each Ginnie Mae Multifamily Certificate included in the related
Trust Asset Group) is the Principal Distribution Amount for that Series (or Security Group(s)).

When preceded by a group or subgroup designation (e.g., the "Group 2 Principal Distribution Amount" or the "Subgroup 2A Principal Distribution Amount"), such amount for the specified Trust
Asset Group or Subgroup.
Query result: Certain Trust MBS may be based on and backed by Mortgage Loans secured by a mark-to-market project developed under HUD's Office of Multifamily Housing Assistance Restructuring
Processing Procedures (the "RX Program"). The Mortgage Rate of Mortgage Loans underlying any such Trust MBS is required to be at least 0.50% greater than the Certificate Rate of the related
Trust MBS.

Each Ginnie Mae Issuer will perform the routine functions required for servicing of Trust MBS and related Mortgage Loans for which it is responsible, including mortgagor billings, receipt and
posting of payments, payment of property taxes and hazard insurance premiums, remittance, collections and customer service. Each Ginnie Mae Issuer will be obligated under its Certificate
Guaranty Agreements with Ginnie Mae to service the Mortgage Loans in accordance with FHA requirements and with generally accepted practices in the mortgage lending industry. Each Ginnie Mae
Issuer's responsibilities with respect to its Mortgage Loans will include:

(a) collection of all principal and interest payments, Prepayment Penalties, if any, and payments made by the borrower or borrowers toward escrows established for taxes and insurance
premiums;

(b) maintenance of necessary hazard insurance policies;

(c) institution of all actions necessary to foreclose on, or take other appropriate action with respect to, loans in default; and

(d) collection of insurance and guaranty benefits.

The Trust Asset Depository or its nominees, as registered holder (on behalf of the Trustee) of the related Trust MBS, will have the right to proceed directly against Ginnie Mae under the
terms of the related Trust MBS for any amounts that are not paid when due.

Ginnie Mae Multifamily Certificates are issued under the Ginnie Mae I Program.

### The Ginnie Mae Construction Loan Certificates

Each Ginnie Mae Construction Loan Certificate is based on and backed by a single Mortgage Loan secured by a multifamily project under construction and insured by FHA pursuant to an FHA
Insurance Program described in the related Offering Circular Supplement. Ginnie Mae Construction Loan Certificates are generally issued monthly by the related Ginnie Mae Issuer as
construction progresses on the related multifamily project and as advances are insured by FHA.
Query result: The original maturity of a Ginnie Mae Construction Loan Certificate is at least 200% of the construction period for the multifamily project anticipated by FHA. The stated
maturity of a Ginnie Mae Construction Loan Certificate may be extended after issuance at the request of the related Ginnie Mae Issuer with the prior written approval of Ginnie Mae. Prior to
approving any extension request, Ginnie Mae requires that the Contracted Security Purchaser, the entity bound under contract with the related Ginnie Mae issuer to purchase all of the Ginnie
Mae Construction Loan Certificates relating to a particular project, consent to the extension of the maturity date. Upon the maturity of any Ginnie Mae Construction Loan Certificate, the
related Ginnie Mae Issuer must retire the Ginnie Mae Construction Loan Certificate by the payment of cash to the holders provided that (i) no extension has been granted and (ii) the Ginnie
Mae Construction Loan Certificate has failed to convert prior to that time. In addition if

---

### 📄 Page 17

the underlying Mortgage Loan is liquidated prior to maturity, the related Ginnie Mae Issuer must retire the Ginnie Mae Construction Loan Certificates by the payment of cash to the holders.

Each Ginnie Mae Construction Loan Certificate will provide for the payment to the holder of that Ginnie Mae Construction Loan Certificate of monthly payments of interest equal to a pro rata
share of the interest payments on the underlying Mortgage Loan, less applicable servicing and guaranty fees. Holders of Ginnie Mae Construction Loan Certificates are not entitled to receive
any payments of principal collected on the Mortgage Loan as long as the Ginnie Mae Construction Loan Certificates are outstanding. During such period, any prepayments and other recoveries of
principal (other than proceeds from the liquidation of the related Mortgage Loan) or any Prepayment Penalties on the underlying Mortgage Loan received by the Ginnie Mae Issuer will be
deposited into a non-interest bearing escrow account (the "P&I Custodial Account").
Query result: The Trust Asset Depository or its nominees, as registered holder (on behalf of the Trustee) of the related Trust MBS, will have the right to proceed directly against Ginnie Mae
under the terms of the related Trust MBS for any amounts that are not paid when due.

Ginnie Mae Multifamily Certificates are issued under the Ginnie Mae I Program.

### The Ginnie Mae Construction Loan Certificates

Each Ginnie Mae Construction Loan Certificate is based on and backed by a single Mortgage Loan secured by a multifamily project under construction and insured by FHA pursuant to an FHA
Insurance Program described in the related Offering Circular Supplement. Ginnie Mae Construction Loan Certificates are generally issued monthly by the related Ginnie Mae Issuer as
construction progresses on the related multifamily project and as advances are insured by FHA. Prior to the issuance of Ginnie Mae Construction Loan Certificates, the Ginnie Mae Issuer must
provide Ginnie Mae with supporting documentation regarding advances and disbursements on the Mortgage Loan and must satisfy the prerequisites for issuance as described in Chapter 32 of the
Ginnie Mae Mortgage-Backed Securities Guide (the "MBS Guide"). Each Ginnie Mae Construction Loan Certificate upon conversion will be redeemed for a pro rata share of a Ginnie Mae Project Loan
Certificate.

The original maturity of a Ginnie Mae Construction Loan Certificate is at least 200% of the construction period for the multifamily project anticipated by FHA. The stated maturity of a Ginnie
Mae Construction Loan Certificate may be extended after issuance at the request of the related Ginnie Mae Issuer with the prior written approval of Ginnie Mae. Prior to approving any
extension request, Ginnie Mae requires that the Contracted Security Purchaser, the entity bound under contract with the related Ginnie Mae issuer to purchase all of the Ginnie Mae
Construction Loan Certificates relating to a particular project, consent to the extension of the maturity date. Upon the maturity of any Ginnie Mae Construction Loan Certificate, the related
Ginnie Mae Issuer must retire the Ginnie Mae Construction Loan Certificate by the payment of cash to the holders provided that (i) no extension has been granted and (ii) the Ginnie Mae
Construction Loan Certificate has failed to convert prior to that time.
Query result: Any transfer of a Mortgaged Property is subject to HUD review and approval under the terms of HUD's Regulatory Agreement with the owner, which is incorporated by reference into
the mortgage.

### Weighted Average Life

The Weighted Average Life of a security refers to the average amount of time that will elapse from the date of its issuance until each dollar of principal of that security will be repaid to
the investor. As a result, any projection of the Weighted Average Life of and yield on any Class of the Securities must include an assumption about the anticipated timing and amount of
payments on those Securities, which will depend upon the rate of prepayments of the Mortgage Loans, including optional borrower prepayments and prepayments resulting from liquidation of
defaulted Mortgage Loans. In general, prepayments of principal and defaults on the Mortgage Loans will shorten the Weighted Average Life and term to maturity of each related Class of
Securities.

The Weighted Average Life of a Class is determined by (a) multiplying the amount of the net reduction, if any, of the Class Principal Balance (or Class Notional Balance) of such Class from
one Distribution Date to the next Distribution Date by the number of years from the Closing Date to such next Distribution Date, (b) summing the results and (c) dividing the sum by the
aggregate amount of the net reductions in Class Principal Balance (or Class Notional Balance) of such Class referred to in clause (a).

The Weighted Average Lives of the Securities will be influenced by, among other things, the rate at which principal is paid on the Mortgage Loans (or, in the case of a Security Group, on the
Mortgage Loans underlying the related Trust Asset Group). In general, the Weighted Average Lives of the Securities will be shortened if the rate of prepayments of principal of the Mortgage
Loans increases. However, the Weighted Average Lives will depend upon a variety of other factors, including the timing of changes in such rate of principal prepayments. Accordingly, no
assurance can be given as to the Weighted Average Life of any Class. Further, to the extent the prices of the Securities represent discounts or premiums to their respective original principal
balances, variability in the Weighted Average Lives of such Classes could result in variability in the related yields to maturity.
Query result: An election will be made to treat each Trust or certain assets of each Trust as one or more real estate mortgage investment conduits for United States federal income tax
purposes. See "Certain United States Federal Income Tax Consequences" in this Multifamily Base Offering Circular.

---

> **THE GOVERNMENT NATIONAL MORTGAGE ASSOCIATION GUARANTEES THE TIMELY PAYMENT OF PRINCIPAL AND INTEREST ON THE SECURITIES. THE GINNIE MAE GUARANTY IS BACKED BY THE FULL FAITH AND CREDIT OF
THE UNITED STATES OF AMERICA. GINNIE MAE DOES NOT GUARANTEE THE PAYMENT OF PREPAYMENT PENALTIES. THE SECURITIES ARE EXEMPT FROM THE REGISTRATION REQUIREMENTS OF THE SECURITIES ACT OF 1933 AND
CONSTITUTE EXEMPTED SECURITIES UNDER THE SECURITIES EXCHANGE ACT OF 1934.**

---

*Offers of the Securities may be made through one or more different methods, including offerings through the Sponsor, as more fully described in the related Offering Circular Supplement. This
Multifamily Base Offering Circular may not be used to consummate sales of Securities unless you have received the related Offering Circular Supplement.*

**The date of this Multifamily Base Offering Circular is July 1, 2023.
Query result: The Information Agent identified in the Offering Circular Supplement will post the Class Factors, along with the Interest Rate for each Class, on ginniemae.gov.

For any Distribution Date, investors can calculate the amount of principal to be distributed on any Class (other than an Accrual Class or Partial Accrual Class) by multiplying the Original
Class Principal Balance of that Class by the difference between its Class Factors for the preceding and current months. The amount of interest to be distributed on any Class (other than an
Accrual Class or Partial Accrual Class) on each Distribution Date will equal 30 days' interest at the Interest Rate for that Class on its Class Principal Balance (or Class Notional Balance)
as determined by its Class Factor for the preceding month. Based on the Class Factors and Interest Rates published each month, investors in an Accrual Class or Partial Accrual Class can
calculate the total amount of principal and interest to be distributed to (or interest to be added to the Class Principal Balance of) that Class.

Prepayment Penalties received by the Trustee with respect to a Ginnie Mae Multifamily Certificate will be distributed, along with the related prepayment, on the Distribution Date, immediately
following the Trustee's actual receipt of the Prepayment Penalties, to Holders of one or more Classes of Securities in accordance with provisions set forth in the related Offering Circular
Supplement. A distribution of Prepayment Penalties will not decrease the Class Principal Balance of any Class receiving such a distribution.

### Method of Distributions

Distributions of principal and interest (or, where applicable, of principal only or interest only) and related Prepayment Penalties, if any, on a Series (or, if the Series is segregated into
Security Groups, on a Security Group) will be made on each Distribution Date for that Series (or Security Group) (or, with respect to Certificated Securities, the Business Day following the
Distribution Date) to the Persons in whose names the Securities are registered on the related Record Date.
Query result: At any time following the final endorsement of a Mortgage Loan and upon satisfaction of the prerequisites for conversion outlined in Chapter 32 of the MBS Guide, Ginnie Mae
Construction Loan Certificates shall be redeemed for Ginnie Mae Project Loan Certificates. The principal amount of the Ginnie Mae Project Loan Certificates may be less than or equal to the
amount of advances that have been disbursed and insured on the Mortgage Loan underlying the related Ginnie Mae Construction Loan Certificates. Any difference between the principal balance of
the Ginnie Mae Construction Loan Certificates and the principal balance of the Ginnie Mae Project Loan Certificates issued at conversion will be disbursed to the holders of the Ginnie Mae
Construction Loan Certificates as principal upon conversion. To the extent the underlying Mortgage Loan begins to amortize prior to the conversion of the Ginnie Mae Construction Loan
Certificates to Ginnie Mae Project Loan Certificate, the related Ginnie Mae Issuer will be required to pay, at its option, any such prepayments (i) on the date of the conversion of the Ginnie
Mae Construction Loan Certificates or (ii) on the Ginnie Mae Certificate Payment Date of the Ginnie Mae Project Loan Certificate following conversion.

The related Offering Circular Supplement will describe certain characteristics of the Ginnie Mae Construction Loan Certificates and the underlying Mortgage Loans.

Although the Trust may receive principal payments, unscheduled recoveries of principal and Prepayment Penalties, if any, in connection with the liquidation of a Mortgage Loan or following
conversion of a Ginnie Mae Construction Loan Certificate prior to the Ginnie Mae Certificate Payment Date, the Trust will not distribute any such amounts until the Distribution Date
immediately following receipt of such amounts. The Holders of the Securities will not be entitled to receive any interest on such amounts, and the related WACR will be reduced accordingly.

### The Ginnie Mae Project Loan Certificates

All Ginnie Mae Project Loan Certificates issued prior to August 1, 1997 will have an original term to maturity of not more than 40 years and will be based on and backed by one multifamily
Mortgage Loan. Ginnie Mae Project Loan Certificates issued after August 1, 1997, may be based on or backed by more than one multi-family Mortgage Loan.
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:16:06.249 DEBUG    livekit.agents     tools execution completed {"speech_id": "speech_c521790e881a"}
   MacBook Pro Microphone   ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁

    08:16:07.884 DEBUG    livekit.agents     aec warmup active, disabling interruptions for 3.00s
   MacBook Pro Microphone          ▁ ▁ ▁ ▁ ▃ ▅ ▄ ▃ ▁ ▂ ▁ ▁ ▁ ▁                             end_of_turn: 1020ms · turn_completed_cb: 0.00ms · llm_ttft: 1249ms · tts_ttfb: 133ms  ─  e2e: 4264ms

    08:16:10.890 DEBUG    livekit.agents     aec warmup expired, re-enabling interruptions
   MacBook Pro Microphone          ▁ ▁ ▁ ▆ ▂ ▆ ▁ ▃ ▁ ▁ ▁ ▁ ▁ ▁                             end_of_turn: 1020ms · turn_completed_cb: 0.00ms · llm_ttft: 1249ms · tts_ttfb: 133ms  ─  e2e: 4264ms

    08:16:23.004 DEBUG    livekit.agents     conversation_item_added
                                         {"role": "assistant", "text": "FHA Section 223(f) allows for federal insurance of mortgage loans to purchase or refinance existing multifamily housing
that doesn't require substantial rehabilitation. It aims to provide lower debt service or support affordable rental housing."}
   MacBook Pro Microphone          ▁ ▁ ▁ ▃ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁                             end_of_turn: 1020ms · turn_completed_cb: 0.00ms · llm_ttft: 1249ms · tts_ttfb: 133ms  ─  e2e: 4264ms

   ? for shortcuts

Вывад

Для заключэння неабяжна практычна апранаванне: перад змінайом код неабяжна ваказаць інпуты, адміністратара крока та критэрыя завершэння. Аператары должны магчымаць перапрацоўваць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабяжна фіксаваць час выкарыстоўвання та кост токенаў чы запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае праказаванне костаў запобегае неспакойным рашчыткам, калі процес пераходзіць з дэмавайнага сераўера ў спяльныя среды. Неабяжна цітаваць тыя часткі тексту, якія фактычна лежалі в основе адпаведнай адказу. Без цітатаў аператары не можаць разлічыць галюцинацію ад працягу індэксавання.

Заключэння

У заключэнне, пры змяне коду неабходна ўзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здогадвацца пра схованы стан. Конфігурацыю трэба залічыць параду ўнутрь коду прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг задач. Наводзіць трэба тыя часткі тексту, якія фактычна лежаць у падставе адпаведнай адпаведзі. Без цых цитатаў аператары не можаць розразліць галюцинацію ад прычыны, вызванай недастаткам індэксацыі. У заключэнне, пры змяне коду неабходна ўзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Валідзіць кращэ маленькія, тэставаныя елементы, чым велікія скрыпты. Калі крок не выйшоў, прычына нехарактэрнага результата должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцуг задач.

Чэк-ліст для эксплуатацыі

Для канцэларскага чак-ліста, пры змяне коду, неабходна ясная ваказка пра вхідныя даны, адміністратара практыкі і крэтыяры завершэння. Аператары павінны магчымаць перзапуск практыкі з вядомага контрольнага пункту, не спрабоўваючы здогадвацца пра схованы стан.

Неабходна адначасова задокументаваць шлях успеху і шлях вярнення. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не дадатковым элементам пасля його стварэння.

Паказваць неабходна тыя часткі тексту, якія фактычна служылі падставай для адпаведнага адказу. Без ціх цытатаў аператары не зможаць розразліць галюцинацыю ад працягу праз прашчэпы індексавання.

Заставляць ствараць контрольныя пункты пасля дорогіх практык. Система вярнення не павінна занова ставіць плату за той самы вызыв LLM, калі аператар перапрыбуе практыку з пазнейшага етапу.

Фіксаваць версіі залежнасцяў і задапісваць хэш адпаведнага зображэння, якое было выкарыстоўванае пад час дэманстрацыі. Возможнасць перадарабаткі важлівейшая, чым традыцыйныя знання.

Запісвайце часы выканання аперацый і косць токена чыста запитоў праза функцыйнальныя рэзултаты. Відразлівая візуабільнасць косца з самага пачатку запобегае неспакоўным рахункам, калі парадок пераходзіць з дэмовай среды ў спадзеленыя среды.

Перш чым пераводзіць стэк у болей серйозны режым, заморожвайце версіі, зафіксавайце «золаты» транскрыпты для критычных парадакоў і пераканайцеся ў наявнасці крокаў для атрыбуцыі. Спадзеленыя среды выклікаюць патрэбу ў лімітах частоты выканання, пераказах прыналежнасці і чыстай адпаведальнасці за змяну секрэтных даных. Лепш выбіраць простую надзею на надзейнасць, чым хітрыя експерыментальныя дэманстрацыі.

Прыметка для 61404a6b0791: не кладзіце ключы прадастаўцаў у репазітарый, задаце верхнюю межу токена на кожную сесію і зберагачыце транскрыпты праза фіксаты для ацэнкі, каб пазнейшыя замены моделей заставаліся пораўнаннымі.

Пры спроўвачэнні захода з паўнейшага забезпечэння безпекі №0 найкраща ставіцца да яго як да вимернай паверхні. Зберыце адна «золатая» транскрыпцію, адин прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць сферу дзеяння. Дакументавацыя успішнаг і восстанавліваючага падхода трэба выконваць разам. Перапрыткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не наступным этапам дорабачання.

Дзеянне па паўнейшаму забезпечэнню безпекі №0/713: вымерыце час выканання, класію памылак і колькасць выкарыстоўваных токенав для гэтага запісу, а пасля, на аднойчынных крэтарыях, а не на асоціяціях, вынікніце, чы робіць змяны.

Для захода па паўнейшаму забезпечэнню безпекі №1, перш чым зменяць код, задаце вхідныя даны, адпаведальнага за крок і крэтарыі завершэння. Аперацыйныя працавнікі должны магчымае перадзваначыць крок з вядомага контрольнага пункту, не спрабоўваючы здогадвацца пра схованы стан. Ставіце гэты этап як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даце назвы артыфактам, задаце крэтарыі успеху і адмовіцеся ад тыхнай частковай завершэння без паведамлення.

Дзеянне паўнэйшага забезпечэння 1/713: звярніце увагу на час выканання, класы каштоўкаў і витрату токенаў для гэтага запісу, а пасля, на аднойчынай базе пытанняў, а не на асобістых спазыраннях, выявіце, чы хачаце застаўіць змяну.

Працюючы над запісам паўнэйшага забезпечэння 2, спачатку запісайце схему: неабходныя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыпання. Такі список контролю дапамагае заставіць пасляэтапныя змяны ў кодзе чыстымі. Зберагаюце настройкі праза код аплікацыі. Файлы сяродавысці, хранільнікі секрэтных дадзенняў і флагі функцыйяй должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабходнасці чытання всей структуры.

Дзеянне паўнэйшага забезпечэння 2/713: звярніце увагу на час выканання, класы каштоўкаў і витрату токенаў для гэтага запісу, а пасля, на аднойчынай базе пытанняў, а не на асобістых спазыраннях, выявіце, чы хачаце застаўіць змяну.