.NET
Install the .NET SDK and start building AI applications with semantic memory.
Build AI applications with C# using the Graphlit SDK.
Installation
Install the Graphlit client with NuGet:
dotnet add package GraphlitRequirements:
.NET 6.0 or higher (or .NET 8.0+)
Graphlit account with API credentials
Quick Start
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Graphlit;
class Program
{
static async Task Main(string[] args)
{
// Reads from environment variables
using var httpClient = new HttpClient();
var graphlit = new Graphlit(
httpClient,
organizationId: Environment.GetEnvironmentVariable("GRAPHLIT_ORGANIZATION_ID"),
environmentId: Environment.GetEnvironmentVariable("GRAPHLIT_ENVIRONMENT_ID"),
jwtSecret: Environment.GetEnvironmentVariable("GRAPHLIT_JWT_SECRET")
);
// Ingest content
var response = await graphlit.IngestText.ExecuteAsync(
name: "Product Requirements",
text: "Our AI agent needs persistent memory across sessions..."
);
response.EnsureNoErrors();
Console.WriteLine($"✅ Memory created: {response.Data?.IngestText?.Id}");
}
}That's it! Set GRAPHLIT_ORGANIZATION_ID, GRAPHLIT_ENVIRONMENT_ID, and GRAPHLIT_JWT_SECRET in your environment and the SDK reads them automatically.
Configuration
Environment Variables (Production)
Option 1: launchSettings.json (Development)
{
"profiles": {
"MyApp": {
"environmentVariables": {
"GRAPHLIT_ORGANIZATION_ID": "your_actual_org_id",
"GRAPHLIT_ENVIRONMENT_ID": "your_actual_env_id",
"GRAPHLIT_JWT_SECRET": "your_actual_jwt_secret"
}
}
}
}Option 2: User Secrets (Development)
dotnet user-secrets init
dotnet user-secrets set "GRAPHLIT_ORGANIZATION_ID" "your_actual_org_id"
dotnet user-secrets set "GRAPHLIT_ENVIRONMENT_ID" "your_actual_env_id"
dotnet user-secrets set "GRAPHLIT_JWT_SECRET" "your_actual_jwt_secret"Option 3: appsettings.json (Never commit secrets)
{
"Graphlit": {
"OrganizationId": "",
"EnvironmentId": "",
"JwtSecret": ""
}
}Load with IConfiguration:
using Microsoft.Extensions.Configuration;
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables() // Overrides appsettings
.AddUserSecrets<Program>() // Development secrets
.Build();
using var httpClient = new HttpClient();
var graphlit = new Graphlit(
httpClient,
organizationId: config["Graphlit:OrganizationId"],
environmentId: config["Graphlit:EnvironmentId"],
jwtSecret: config["Graphlit:JwtSecret"]
);Security: Use Azure Key Vault, AWS Secrets Manager, or environment variables in production. Never commit secrets to source control. Add appsettings.*.json with secrets to .gitignore.
Common Patterns
Ingest Content
// From URL
var response = await graphlit.IngestUri.ExecuteAsync(
uri: "https://example.com/document.pdf"
);
response.EnsureNoErrors();
// From text
var textResponse = await graphlit.IngestText.ExecuteAsync(
name: "Meeting Notes",
text: "Discussion about Q4 planning..."
);
textResponse.EnsureNoErrors();Search Memory
var input = new ContentFilter
{
Search = "quarterly planning"
};
var response = await graphlit.QueryContents.ExecuteAsync(input);
response.EnsureNoErrors();
foreach (var content in response.Data?.Contents?.Results ?? Array.Empty<Content>())
{
Console.WriteLine($"📄 {content.Name}");
}Chat with Context
// Create conversation
var conversationInput = new ConversationInput
{
Name = "AI Assistant"
};
var conversation = await graphlit.CreateConversation.ExecuteAsync(conversationInput);
conversation.EnsureNoErrors();
// Ask questions
var response = await graphlit.PromptConversation.ExecuteAsync(
prompt: "What did we discuss about Q4 planning?",
id: conversation.Data?.CreateConversation?.Id
);
response.EnsureNoErrors();
Console.WriteLine(response.Data?.PromptConversation?.Message?.Message);Next Steps
Quickstarts:
Quickstart: Your First Agent - Build a streaming agent in 7 minutes
AI Agents - Create agents with persistent memory
Examples:
.NET Examples - Console apps and samples
Microsoft Agent Framework - Integration patterns
Resources:
Use Case Library - 100+ code examples
Ask Graphlit - AI code assistant
Join Discord - Get help from the community
Last updated
Was this helpful?