{ "cells": [ { "cell_type": "code", "execution_count": 5, "id": "45a56eb5", "metadata": {}, "outputs": [], "source": [ "# Copyright (c) 2026 Microsoft Corporation.\n", "# Licensed under the MIT License." ] }, { "cell_type": "markdown", "id": "7a49f267", "metadata": {}, "source": [ "## Basic completion example\n", "\n", "This example demonstrates basic usage of the LLM library to interact with Azure OpenAI. It loads environment variables for API configuration, creates a ModelConfig for Azure OpenAI, and sends a simple question to the model. The code handles both streaming and non-streaming responses (streaming responses are printed chunk by chunk in real-time, while non-streaming responses are printed all at once). It also shows how to use the gather_completion_response utility function as a simpler alternative that automatically handles both response types and returns the complete text." ] }, { "cell_type": "code", "execution_count": 6, "id": "88ca8061", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Not streaming response:\n", "The capital of France is **Paris**.\n", "The capital of France is **Paris**.\n" ] } ], "source": [ "import os\n", "from collections.abc import Iterator\n", "\n", "from dotenv import load_dotenv\n", "from graphrag_llm.completion import LLMCompletion, create_completion\n", "from graphrag_llm.config import AuthMethod, ModelConfig\n", "from graphrag_llm.types import LLMCompletionChunk, LLMCompletionResponse\n", "from graphrag_llm.utils import (\n", " gather_completion_response,\n", ")\n", "\n", "load_dotenv()\n", "\n", "api_key = os.getenv(\"GRAPHRAG_API_KEY\")\n", "api_base = os.getenv(\"GRAPHRAG_API_BASE\")\n", "\n", "model_config = ModelConfig(\n", " model_provider=\"azure\",\n", " model=os.getenv(\"GRAPHRAG_MODEL\", \"gpt-4o\"),\n", " azure_deployment_name=os.getenv(\"GRAPHRAG_MODEL\", \"gpt-4o\"),\n", " api_base=api_base,\n", " api_version=os.getenv(\"GRAPHRAG_API_VERSION\", \"2025-04-01-preview\"),\n", " api_key=api_key,\n", " auth_method=AuthMethod.AzureManagedIdentity if not api_key else AuthMethod.ApiKey,\n", ")\n", "llm_completion: LLMCompletion = create_completion(model_config)\n", "\n", "response: LLMCompletionResponse | Iterator[LLMCompletionChunk] = (\n", " llm_completion.completion(\n", " messages=\"What is the capital of France?\",\n", " )\n", ")\n", "\n", "if isinstance(response, Iterator):\n", " print(\"Streaming response:\")\n", " # Streaming response\n", " for chunk in response:\n", " print(chunk.choices[0].delta.content or \"\", end=\"\", flush=True)\n", "else:\n", " # Non-streaming response\n", " print(\"Not streaming response:\")\n", " print(response.choices[0].message.content)\n", "\n", "# Alternatively, you can use the utility function to gather the full response\n", "# The following is equivalent to the above logic. If all you care about is\n", "# the first choice response then you can use the gather_completion_response\n", "# utility function.\n", "response_text = gather_completion_response(response)\n", "print(response_text)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.9" } }, "nbformat": 4, "nbformat_minor": 5 }