IronHive.Abstractions
0.45.1
dotnet add package IronHive.Abstractions --version 0.45.1
NuGet\Install-Package IronHive.Abstractions -Version 0.45.1
<PackageReference Include="IronHive.Abstractions" Version="0.45.1" />
<PackageVersion Include="IronHive.Abstractions" Version="0.45.1" />
<PackageReference Include="IronHive.Abstractions" />
paket add IronHive.Abstractions --version 0.45.1
#r "nuget: IronHive.Abstractions, 0.45.1"
#:package IronHive.Abstractions@0.45.1
#addin nuget:?package=IronHive.Abstractions&version=0.45.1
#tool nuget:?package=IronHive.Abstractions&version=0.45.1
IronHive
<p align="center"> <img src="assets/ironhive.png" alt="IronHive Logo" width="200"/> </p>
<p align="center"> <a href="https://github.com/iyulab/ironhive/actions/workflows/ci.yml"> <img src="https://github.com/iyulab/ironhive/actions/workflows/ci.yml/badge.svg" alt="CI"> </a> <a href="https://www.nuget.org/packages/IronHive.Core"> <img src="https://img.shields.io/nuget/v/IronHive.Core?label=NuGet" alt="NuGet"> </a> <a href="https://github.com/iyulab/ironhive/blob/main/LICENSE"> <img src="https://img.shields.io/github/license/iyulab/ironhive" alt="License"> </a> </p>
IronHive는 기업용 AI 애플리케이션을 위한 .NET 10 파이프라인 프레임워크입니다. 이름 기반 레지스트리 패턴으로 멀티 Provider LLM 통합, 멀티에이전트 오케스트레이션, RAG 파이프라인, 파일 처리를 제공합니다.
주요 기능
- 멀티 Provider LLM — OpenAI, Anthropic, Google AI (Gemini/Vertex AI), OpenAI Compatible (Ollama, LM Studio, GPUStack 등)
- 멀티에이전트 오케스트레이션 —
SequentialOrchestrator·ParallelOrchestrator·HubSpokeOrchestrator(각자의…OrchestratorOptions로 생성),HandoffOrchestratorBuilder·GroupChatOrchestratorBuilder·GraphOrchestratorBuilder(DAG). 공통 옵션 — 타임아웃 ·StopOnAgentFailure· 에이전트 미들웨어 · 승인 핸들러 · 컨텍스트 스코프 · 결과 distiller — 은 옵션 객체 또는 빌더의Set…으로 준다(docs/ORCHESTRATION.md) - RAG 파이프라인 — 텍스트 추출, 청킹, 임베딩, 벡터 검색
- 다중 모달리티 — 이미지 생성, 음성 TTS/STT, 비디오 생성
- 플러그인 — MCP:
McpClientManager.AddOrUpdate(new McpHttpClientConfig{…}/McpStdioClientConfig{…})로 서버를 붙이고 세션의 도구를 에이전트 도구에 더한다(HTTP/Stdio/OAuth). OpenAPI:new OpenApiClientManager(tools)에await AddOrUpdateAsync(client)로OpenApiClient를 등록하면 스펙의 연산이 그IToolCollection에 도구로 들어간다(docs/PLUGINS.md) - M.E.AI 호환 — 패키지
IronHive.Extensions.AI(의존: Abstractions 뿐 — Core 없이 provider 를IChatClient로):generator.AsChatClient(model, provider)·AsEmbeddingGenerator(…)·AIToolAdapter(임의의AITool을ITool로 래핑·실행 — MCPMcpClientTool등).using IronHive.Extensions.AI; - 워크플로우 — 코드 기반 타입 안전 워크플로우 엔진
- 구조화 출력 —
OutputFormat.For<T>()/For(schema)는 스키마로 구속,OutputFormat.Json은 스키마 없는 JSON 모드(provider 네이티브 JSON 모드로 번역 — OpenAIjson_object, GeminiresponseMimeType, Anthropic 은 시스템 지시).AgentInvokeOptions.OutputFormat또는IChatClient의ChatOptions.ResponseFormat으로 켠다 - 도구 결과 합계 예산 —
ToolResultBudgetMiddleware가 한 호출의 도구 루프 전체에서 모델에 보내는 결과 텍스트 합계를 제한(작은 문맥 창 대응, docs/TOOLS.md) - 공급자 고유 필드 —
MessageRequest.ExtraBody(임베딩은EmbeddingRequestOptions.ExtraBody,EmbedBatchAsync(model, inputs, options)) 가 요청 본문에 합쳐지고, 매핑되지 않은 응답 필드(예: llama.cpptimings)가MessageResponse.ExtraBody로 돌아온다(OpenAI Compatible, docs/PROVIDERS.md) - 토큰 로그 확률 —
MessageRequest.LogProbabilities(상위 대안 0~20)로 출력 토큰별 로그 확률을 받는다(MessageResponse.LogProbabilities, 스트리밍 done 프레임에도; OpenAI Compatible · Google AI, docs/PROVIDERS.md) - 도메인 예외 — 컨텍스트 윈도우 초과 시 프로바이더별 오류를
ContextOverflowException(ContextWindow·RequestTokens포함)으로 정규화 — 문자열 파싱 없이catch로 압축·복구 로직 작성 가능. 프로바이더 대신 자기 OpenAI SDK 클라이언트(또는Microsoft.Extensions.AI.OpenAI)를 쓰는 경우OpenAIErrors.TryMapContextOverflow(ex)/TryMapRateLimit(ex)(IronHive.Providers.OpenAI)로 같은 매핑을 받는다
왜 IronHive인가
2026년 4월 Microsoft Agent Framework 1.0이 AutoGen과 Semantic Kernel을 통합해 GA로 출시되며 .NET LLM 오케스트레이션의 유력한 기본 선택지로 떠올랐습니다. IronHive는 이와 다른 설계 축을 선택합니다 — 로컬 우선, 클라우드 무의존입니다.
- 완전한 로컬 추론 루프 — lm-supply로 LLM 생성·임베딩·리랭킹·OCR까지 GGUF/ONNX 백엔드로 순수 .NET에서 실행합니다. 클라우드 계정이나 네트워크 연결 없이도 에이전트 루프 전체가 동작합니다.
- 네이티브 .NET, 브리지 불필요 — Microsoft Agent Framework의 로컬 실행 경로(Foundry Local)는 2026년 기준 Python 전용이며, .NET에서 쓰려면 커뮤니티 어댑터를 거쳐야 합니다. IronHive는 로컬 추론이 처음부터 .NET 1급 시민입니다.
- RAG 파이프라인 내장 — 문서 처리(FileFlux/WebFlux)부터 하이브리드 검색(FluxIndex)까지 별도 통합 없이 바로 사용합니다.
Azure 생태계에 이미 투자한 팀이라면 Microsoft Agent Framework가 자연스러운 선택입니다. 오프라인/에어갭 환경, 데이터 상주 요구사항, 또는 클라우드 종속을 피하려는 .NET 애플리케이션이라면 IronHive가 그 자리를 채웁니다.
설치
dotnet add package IronHive.Core
dotnet add package IronHive.Providers.OpenAI # 또는 Anthropic, GoogleAI 등
빠른 시작
Standalone (콘솔)
using IronHive.Core;
using IronHive.Providers.OpenAI;
using IronHive.Abstractions.Messages.Content;
var hive = new HiveServiceBuilder()
.AddOpenAIProviders("openai", new OpenAIConfig { ApiKey = "your-api-key" })
.Build();
var agent = hive.CreateAgentFrom(cfg =>
{
cfg.Provider = "openai";
cfg.Model = "gpt-4o-mini";
cfg.Instructions = "당신은 친절한 도우미입니다.";
});
// 단순 텍스트 호출
var response = await agent.InvokeAsync("안녕하세요");
// per-request 옵션 (에이전트 기본값 위에 이 호출에만 overlay)
var response2 = await agent.InvokeAsync("안녕하세요", new AgentInvokeOptions
{
ThinkingEffort = MessageThinkingEffort.High,
ThinkingOutput = MessageThinkingOutput.Summary, // 추론 요약을 응답에 싣기 (None 이면 숨김)
Suggestions = new SuggestionOptions(), // 후속 질의 제안 활성화
MaxTokens = 2048,
});
// 스트리밍
await foreach (var chunk in agent.InvokeStreamingAsync("안녕하세요"))
{
// chunk 처리
}
ASP.NET Core DI 통합
// Program.cs
builder.Services.AddHiveService((hiveBuilder, sp) =>
hiveBuilder
.AddOpenAIProviders("openai", new OpenAIConfig
{
ApiKey = builder.Configuration["OpenAI:ApiKey"]!
})
.Build());
// 서비스에서 IHiveService 주입
public class ChatService(IHiveService hive)
{
public async Task<string> ChatAsync(string text)
{
var agent = hive.CreateAgentFrom(cfg =>
{
cfg.Provider = "openai";
cfg.Model = "gpt-4o-mini";
});
var response = await agent.InvokeAsync(text);
return response.Message?.Content
.OfType<TextMessageContent>()
.FirstOrDefault()?.Value ?? string.Empty;
}
}
패키지
| 패키지 | 설명 |
|---|---|
IronHive.Abstractions |
인터페이스 및 계약 (외부 의존 없음) |
IronHive.Core |
핵심 구현 (에이전트, 오케스트레이터, 워크플로우) |
IronHive.Extensions.AI |
provider 를 Microsoft.Extensions.AI IChatClient / IEmbeddingGenerator 로 — Abstractions 만 의존(Core 불필요) |
IronHive.Providers.OpenAI |
OpenAI / Azure OpenAI / xAI (Responses API, Embeddings, DALL-E, TTS/STT) |
IronHive.Providers.Anthropic |
Anthropic Claude |
IronHive.Providers.GoogleAI |
Google Gemini + Vertex AI (이미지, 비디오, 오디오 포함) |
IronHive.Providers.OpenAI.Compatible |
Ollama, LM Studio, vLLM, llama.cpp, GPUStack 등 — Chat Completions 표면 |
IronHive.Storages.Qdrant |
Qdrant 벡터 데이터베이스 |
IronHive.Storages.Amazon |
Amazon S3 파일 저장소 |
IronHive.Storages.Azure |
Azure Blob / File Share |
IronHive.Storages.RabbitMQ |
RabbitMQ 큐 |
IronHive.Plugins.MCP |
Model Context Protocol (HTTP/Stdio/OAuth) |
IronHive.Plugins.OpenAPI |
OpenAPI 도구 자동 생성 |
출력 길이 파라미터 선택 (0.16.0~) — OpenAI 가
max_tokens를max_completion_tokens로 개명하면서 생태계가 갈렸다. 최신 OpenAI 모델은 구 이름을 거부하고, 다수의 self-hosted 서버는 새 이름을 모른 채 무시한다 — 모르는 필드는 오류가 아니라 침묵이므로, 상한이 조용히 사라지고 증상은 "응답이 예상보다 길다" 뿐이다. 어디서나 통하는 이름이 없어 선택지로 제공한다:var config = new OpenAICompatibleConfig { BaseUrl = "http://localhost:11434", TokenLimitParameter = TokenLimitParameter.MaxTokens // 구 이름만 아는 서버 };기본값은
MaxCompletionTokens— 종전 동작 그대로라 기존 설정은 영향받지 않는다.Both는 둘 다 받아들이는 엔드포인트에서만 쓴다(구 이름을 거부하는 곳에서는 요청 전체가 실패한다).MaxTokens를 지정하지 않으면 어느 설정에서도 두 필드 모두 전송되지 않는다.
localhost와 연결 타임아웃 (0.41.0~) — 각 provider 가 직접 만드는 전송은 호스트의 주소들을 경주시킨다 (RFC 8305):localhost가::1부터 풀려도 IPv4 전용 로컬 서버(llama-server · Ollama 기본값)에 곧바로 붙는다. 그 전에는 Windows 에서 거부된 IPv6 연결이 약 2 초 걸려 OpenAI-compatible 의 2 초ConnectTimeout이 먼저 끝났다.HttpClient를 직접 주입하는 경우 같은 동작은IronHive.Abstractions.Http.ProviderConnect.CreateHandler(timeout)로 얻는다.
문서
| 문서 | 설명 |
|---|---|
| docs/ARCHITECTURE.md | 시스템 아키텍처 및 설계 원칙 |
| docs/SETUP.md | HiveServiceBuilder 구성 및 DI 통합 |
| docs/AGENTS.md | 에이전트 생성 및 호출 |
| docs/MIDDLEWARE.md | 미들웨어 시스템 (Retry, Timeout, CircuitBreaker 등) |
| docs/ORCHESTRATION.md | 멀티에이전트 오케스트레이션 패턴 |
| docs/TOOLS.md | FunctionTool 및 커스텀 도구 |
| docs/MEMORY.md | RAG 파이프라인 및 MemoryWorker |
| docs/PROVIDERS.md | AI 프로바이더 설정 |
| docs/STORAGES.md | 스토리지 백엔드 설정 |
| docs/PLUGINS.md | MCP / OpenAPI 플러그인 |
| docs/SERVICES.md | IHiveService 서비스 상세 |
Skills (AI 코딩 에이전트용)
AI 코딩 에이전트(GitHub Copilot, Claude Code, Cursor 등)에서 IronHive Skills를 사용하려면:
npx skills add iyulab/ironhive
설치 후 에이전트가 IronHive API 패턴, 오케스트레이션, RAG 파이프라인, 툴 사용법을 자동으로 인식합니다.
요구 사항
- .NET 10.0+
라이선스
MIT — LICENSE 참조.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
NuGet packages (20)
Showing the top 5 NuGet packages that depend on IronHive.Abstractions:
| Package | Downloads |
|---|---|
|
IronHive.Core
IronHive core implementations |
|
|
IronHive.Providers.OpenAI
IronHive OpenAI provider |
|
|
IronHive.Providers.Anthropic
IronHive Anthropic provider |
|
|
IronHive.Providers.GoogleAI
IronHive Google AI provider |
|
|
IronHive.Agent
IronHive Agent - Reusable agent layer for AI-powered CLI tools |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.45.1 | 0 | 9/29/2026 |
| 0.45.0 | 120 | 9/28/2026 |
| 0.44.0 | 124 | 9/28/2026 |
| 0.43.1 | 90 | 9/28/2026 |
| 0.43.0 | 115 | 9/28/2026 |
| 0.42.0 | 453 | 9/27/2026 |
| 0.41.1 | 67 | 9/27/2026 |
| 0.41.0 | 308 | 9/26/2026 |
| 0.40.0 | 221 | 9/26/2026 |
| 0.39.0 | 157 | 9/25/2026 |
| 0.38.0 | 165 | 9/25/2026 |
| 0.37.0 | 207 | 9/24/2026 |
| 0.36.0 | 198 | 9/24/2026 |
| 0.35.0 | 215 | 9/24/2026 |
| 0.34.0 | 291 | 9/23/2026 |
| 0.33.1 | 476 | 9/22/2026 |
| 0.33.0 | 1,172 | 9/20/2026 |
| 0.32.0 | 496 | 9/19/2026 |
| 0.31.0 | 294 | 9/19/2026 |
| 0.30.0 | 284 | 9/19/2026 |