EasyCore.Agent 8.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package EasyCore.Agent --version 8.0.1
                    
NuGet\Install-Package EasyCore.Agent -Version 8.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EasyCore.Agent" Version="8.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="EasyCore.Agent" Version="8.0.1" />
                    
Directory.Packages.props
<PackageReference Include="EasyCore.Agent" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add EasyCore.Agent --version 8.0.1
                    
#r "nuget: EasyCore.Agent, 8.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package EasyCore.Agent@8.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=EasyCore.Agent&version=8.0.1
                    
Install as a Cake Addin
#tool nuget:?package=EasyCore.Agent&version=8.0.1
                    
Install as a Cake Tool

🚀 EasyCore.Agent

EasyCore.Agent 是一个面向 .NET 的轻量级 Agent SDK,提供会话上下文管理、Tool Calling 自动注册、以及 OpenAI 兼容模型接入能力。
This project is a lightweight .NET Agent SDK with context memory, tool calling, and OpenAI-compatible model integration.

.NET C# AI Agent Context


🌍 Language


📚 目录


1. 项目简介

🎯 解决什么问题?

在业务中直接使用大模型 SDK 时,通常会遇到:

  • 多轮会话上下文维护繁琐;
  • Tool 注册和函数调用接入成本高;
  • 不同存储模式(本地内存/Redis)切换不方便。

EasyCore.Agent 通过统一抽象简化以上问题,让你更快构建可落地的 Agent 服务。


2. 架构图

2.1 组件关系图

组件关系图

2.2 一次会话调用时序

一次会话调用时序

3. 核心特性

  • 🧠 多轮上下文记忆:支持按 sessionId 管理历史消息。
  • 🧩 Tool Calling 自动注册:通过 [AITool] 自动识别可调用方法。
  • 🗄️ 可切换上下文存储Memory(开发)与 Redis(生产)双模式。
  • 🔌 OpenAI 兼容接入:支持自定义 BaseUrlModel
  • 🧱 清晰扩展点:基于 BasicAgentClient<TOptions> 便于业务封装。

4. 快速开始

4.1 引用项目

通过nuget 将 EasyCore.Agent 引入你的解决方案。

4.2 注册服务

using EasyCore.Agent;

builder.Services.EasyCoreAgent(options =>
{
    options.AgentContextStoreType = AgentContextStoreType.Memory; // or Redis
    options.MaxContextCount = 20;

    // Redis optional config
    // options.EndPoints = "127.0.0.1:6379";
    // options.Password = "";
    // options.DistributedName = "easycore:agent:";
});

4.3 定义你的 Agent Client

public class DeepSeekAgent : BasicAgentClient<DeepSeekClientOptions>
{
    public DeepSeekAgent(
        IOptions<AgentClientOptions> options,
        IServiceProvider serviceProvider)
        : base(options, serviceProvider)
    {
    }
}

4.4 创建 Agent 并对话

var tools = toolProvider.GetTools();

var agent = agentClient.CreateAgent(
    agentName: "assistant",
    instructions: "你是一个专业助手",
    tools: tools);

var answer = await agentClient.ChatRunAsync(
    sessionId: "user-001",
    agent: agent,
    message: "帮我查一下今天上海天气");

5. 配置说明

5.1 AgentClientOptions

字段 说明 示例
ApiKey 模型服务密钥 sk-xxxx
BaseUrl 模型服务地址 https://api.openai.com/v1
Model 模型名称 gpt-4.1-mini

5.2 AgentConfigOptions

字段 说明 建议
AgentContextStoreType 上下文存储类型(Memory/Redis) 本地开发用 Memory
MaxContextCount 最大上下文条数 20~50
EndPoints Redis 地址 127.0.0.1:6379
Password Redis 密码 按环境配置
DistributedName Redis Key 前缀 easycore:agent:

6. Tool 开发指南

6.1 定义工具类

public class WeatherTool
{
    [AITool("get_weather")]
    [ToolDescription("根据城市获取天气")]
    public string GetWeather(string city)
    {
        return $"{city} 当前天气晴,25℃";
    }
}

6.2 注册机制说明

系统会扫描运行目录程序集中的 public 实例方法,识别 [AITool] 并注册到 IAIToolProvider


7. API 使用示例

7.1 多轮会话(带上下文)

var answer = await agentClient.ChatRunAsync(sessionId, agent, userInput);

7.2 单轮调用(无上下文)

var answer = await agentClient.ChatRunAsync(agent, "hello");

7.3 清空上下文

agentClient.ClearChatContext(sessionId);

8. 最佳实践

  • ✅ 生产环境优先使用 Redis,保障多实例上下文一致性。
  • ✅ 建议通过网关或中间件统一注入 sessionId
  • ✅ 对 Tool 输入参数做业务校验,避免高风险调用。
  • ✅ 记录请求耗时与工具调用日志,便于排障和优化。

9. FAQ

❓ Q1:ApiKey/BaseUrl/Model is not configured 报错?

请确认配置非空,且不要包含不可见字符(如全角空格、换行)。

❓ Q2:工具为什么没有被调用?

请检查:

  1. 是否为 public 实例方法;
  2. 是否添加 [AITool("tool_name")]
  3. 工具所在程序集是否被扫描。

❓ Q3:上下文为何丢失?

  • Memory 模式仅进程内有效;
  • 若需持久化/多实例共享,请使用 Redis。

10. Demo 运行

dotnet run --project demo/AspCoreAgent/AspCoreAgent.csproj

📄 License

请根据你的项目需求补充 License(MIT / Apache-2.0 / 私有协议)。

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
8.0.3 37 5/14/2026
8.0.2 95 5/8/2026
8.0.1 82 5/6/2026
8.0.0 95 5/6/2026 8.0.0 is deprecated because it is no longer maintained and has critical bugs.