这是一个基于 LLamaSharp 框架开发的 C# 本地离线 Qwen 大模型控制台聊天程序,核心特点是无网络依赖、无上下文记忆、纯单次问答,适合快速本地部署和隐私保护场景。
·
这是一个基于 LLamaSharp 框架开发的 C# 本地离线 Qwen 大模型控制台聊天程序,核心特点是无网络依赖、无上下文记忆、纯单次问答,适合快速本地部署和隐私保护场景。
程序启动时会加载指定路径下的 Qwen2.5-7B-Instruct 量化模型(如 qwen2.5-7b-instruct-1m-q4_k_m.gguf),加载过程屏蔽了冗余日志,仅显示必要提示。模型加载完成后,控制台会打印简洁的欢迎界面,明确说明模型名称、运行模式和退出指令。
核心逻辑采用单次对话模式:每次用户提问时,程序会按 Qwen 官方的 im_start/im_end 模板拼接系统提示词和用户问题,直接发送给模型推理,不保存任何对话历史,确保每次提问都是全新独立的会话,完全规避上下文记忆带来的信息泄露或逻辑干扰问题。
推理过程采用流式输出,用户能实时看到模型生成的回答,同时设置了最大生成长度、温度参数和终止符,保证回答的可控性和简洁性。用户输入 exit 即可退出程序,资源会自动释放。
整个程序代码极简,无知识库、无复杂依赖,只需配置模型路径即可运行,非常适合工业控制、敏感数据场景下的离线 AI 问答需求,兼顾了轻量化、隐私性和易用性。
模型下载链接:https://modelscope.cn/models/ngxson/Qwen2.5-7B-Instruct-1M-Q4_K_M-GGUF/files
库下载:使用vs2022的nuget。
using LLama;
using LLama.Common;
using LLama.Sampling;


using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using LLama;
using LLama.Common;
using LLama.Sampling;
namespace QwenConsole
{
class Program
{
private static LLamaWeights _model;
private static LLamaContext _context;
private static InteractiveExecutor _executor;
private static readonly InferenceParams _infParams = new InferenceParams
{
MaxTokens = 800,
AntiPrompts = new[] { "<|im_end|>" },
SamplingPipeline = new DefaultSamplingPipeline { Temperature = 0.3f }
};
private static string _modelPath = "qwen2.5-7b-instruct-1m-q4_k_m.gguf";
static async Task Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine("正在加载模型...");
// 屏蔽模型加载日志
using (var nullWriter = new StringWriter())
{
Console.SetOut(nullWriter);
var parameters = new ModelParams(_modelPath)
{
ContextSize = 8192,
GpuLayerCount = 99,
Threads = Environment.ProcessorCount,
};
_model = LLamaWeights.LoadFromFile(parameters);
_context = new LLamaContext(_model, parameters);
_executor = new InteractiveExecutor(_context);
}
// 恢复控制台输出
Console.SetOut(new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = true });
// 打印和截图完全一致的欢迎界面
Console.WriteLine("================================================================================================");
Console.WriteLine(" 本地离线大模型聊天助理");
Console.WriteLine($"模型: qwen2.5-7b-instruct-1m-q4_k_m.gguf");
Console.WriteLine(" 纯本地运行,无需联网,保护隐私");
Console.WriteLine(" 输入 exit 退出,直接输入内容开始对话");
Console.WriteLine("================================================================================================");
Console.WriteLine();
while (true)
{
Console.Write("你:");
string input = Console.ReadLine()?.Trim();
if (string.IsNullOrEmpty(input)) continue;
if (input.ToLower() == "exit") break;
await InferAnswer(input);
Console.WriteLine("\n");
}
_context?.Dispose();
_model?.Dispose();
}
static async Task InferAnswer(string question)
{
// 单次对话,无任何上下文记忆
string prompt = $@"<|im_start|>system
你是一个有用的AI助手<|im_end|>
<|im_start|>user
{question}<|im_end|>
<|im_start|>assistant
";
Console.Write("AI:");
await foreach (var token in _executor.InferAsync(prompt, _infParams))
{
if (token.Contains("<|im_end|>")) break;
Console.Write(token);
}
}
}
}
轻量化、隐私性和易用性。
更多推荐

所有评论(0)