npc-clients-csharp/README.md

68 lines
No EOL
1.9 KiB
Markdown

# GumYum NPC SDK for .NET
This is the core GumYum NPC SDK for .NET applications. It provides a clean, modern C# client for integrating AI-powered NPCs into your applications.
## Features
- **API Key Authentication**: Simple authentication using API keys from the GumYum dashboard
- **Automatic JWT Token Management**: Handles token exchange and refresh automatically
- **NPC Spawning**: Deterministic NPC spawning with personality types
- **OpenAI-Compatible Chat**: Chat completions API with streaming support
- **Retry Logic**: Built-in retry handling for temporary failures
- **Event-Driven Architecture**: Rich event system for dialogue and request lifecycle
## Installation
For non-Unity .NET projects, copy the following files to your project:
- `Client.cs`
- `Managers.cs`
- `NPC.cs`
### Dependencies
- .NET 6.0 or later
- System.Text.Json (built-in with .NET)
- Microsoft.Extensions.Logging (optional)
## Unity Users
For Unity projects, please use the Unity-specific package located in `Unity/Assets/GumYumNPC/` which includes:
- Unity-specific serialization
- Coroutine support
- MonoBehaviour integration
- Unity package manager support
## Quick Start
```csharp
using GumYum.NPC;
// Create client
var client = new Client() {
ApiKey = "your-api-key",
ApiSecret = "your-api-secret"
};
// Spawn an NPC
var npc = await client.NPCs.SpawnAsync("universe-id", seed: 12345);
// Chat with the NPC
var messages = new List<ChatMessage> {
new ChatMessage { Role = "user", Content = "Hello!" }
};
var response = await npc.Chat.CompletionsAsync(messages);
Console.WriteLine($"{npc.Name}: {response.Choices[0].Message.Content}");
```
## Architecture
This SDK uses modern C# features:
- Uses `System.Text.Json` for JSON serialization (Unity version uses Newtonsoft.Json)
- Supports `ILogger<T>` for logging integration
- Clean async/await patterns throughout
- No Unity dependencies
## License
See LICENSE file in the repository root.