Как я могу правильно изменить значение maxtoken=256 по умолчанию для LLAMA3 в приложении Blazor на .NET 10.0?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу правильно изменить значение maxtoken=256 по умолчанию для LLAMA3 в приложении Blazor на .NET 10.0?

Сообщение Anonymous »

Описание
Я создаю локальное приложение LLM, которое работает нормально, но при ответе останавливается на 170 словах, что соответствует 256 токенам.
На данный момент я пробовал следующие модели: Meta-Llama-3.1-8B-Instruct-Q8_0.gguf и mistral-7b-instruct-v0.2.Q8_0.gguf.
Я перепробовал все, что мог, и использовал Gemini и Chatgpt, чтобы показать решения, но, кажется, ничего не работает.
Ответ прекращается, а агент нет: агент думает...
Я не использую Python для работы с моделью, а вместо этого я использую using:
LLama;
using LLama.Common;
using LLamaSharp.SemanticKernel;
using LLamaSharp.SemanticKernel.ChatCompletion;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Identity.Client;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.ChatCompletion;

Любая помощь приветствуется.
Вопрос
Как правильно настроить модель для генерации более длинных ответов?
Является ли это ограничением LLamaSharp?
Было бы лучше использовать Python? Если да, то как использовать Python вместо LLamaSharp?
Это мой файл appsettings.json:
"AI": {
"Local": {
"Url": "http://localhost:11434/v1",
"ModelName": "llama3",
"ModelPath": "D:/AI/Models/mistral-7b-instruct-v0.2.Q8_0.gguf",
"ContextSize": 8192, // > LOADING LOCAL GGUF MODEL: {Path}", modelPath);

try
{
var modelParams = new ModelParams(modelPath)
{
ContextSize = localConfig.GetValue("ContextSize", 4096),
GpuLayerCount = localConfig.GetValue("GpuLayerCount", 0),
};

var weights = LLamaWeights.LoadFromFile(modelParams);
var context = weights.CreateContext(modelParams);

var inferenceParams = new InferenceParams() { MaxTokens = 4096 };
logger.LogInformation("Applying session-level MaxTokens override of {MaxTokens} to local model executor.", inferenceParams.MaxTokens);

var executor = new InteractiveExecutor(context);
var chatService = new LLamaSharpChatCompletion(executor);

builder.Services.AddSingleton(chatService);
logger.LogInformation(">> GGUF MODEL LOADED SUCCESSFULLY.");
}
catch (Exception ex)
{
logger.LogCritical(ex, "FATAL ERROR INITIALIZING LLAMASHARP. The application cannot start without a valid local model configuration.");
throw;
}
}
else
{
logger.LogCritical("Local model file not found at path specified in AI:Local:ModelPath. Application cannot start.");
throw new FileNotFoundException("Local GGUF model file not found.", localConfig["ModelPath"]);
}
break;

case "Azure":
var azureConfig = config.GetSection("AI:Azure");
var azureDeploymentName = azureConfig["DeploymentName"];
var azureEndpoint = azureConfig["Endpoint"];
var azureApiKey = azureConfig["ApiKey"];

if (string.IsNullOrEmpty(azureDeploymentName) || string.IsNullOrEmpty(azureEndpoint) || string.IsNullOrEmpty(azureApiKey))
{
throw new InvalidOperationException("Azure OpenAI configuration is incomplete. 'DeploymentName', 'Endpoint', and 'ApiKey' are required in the 'AI:Azure' section of appsettings.json.");
}

logger.LogInformation("Configuring LLM with Azure OpenAI. Deployment: {Deployment}", azureDeploymentName);
builder.AddAzureOpenAIChatCompletion(azureDeploymentName, azureEndpoint, azureApiKey);
break;

case "OpenAI":
default:
var openAIConfig = config.GetSection("AI:OpenAI");
var openAIModelId = openAIConfig["ModelId"];
var openAIApiKey = openAIConfig["ApiKey"];
var openAIOrgId = openAIConfig["OrgId"]; // Optional

if (string.IsNullOrEmpty(openAIModelId) || string.IsNullOrEmpty(openAIApiKey))
{
throw new InvalidOperationException("OpenAI configuration is incomplete. 'ModelId' and 'ApiKey' are required in the 'AI:OpenAI' section of appsettings.json.");
}

logger.LogInformation("Configuring LLM with OpenAI. Model: {Model}", openAIModelId);
builder.AddOpenAIChatCompletion(openAIModelId, openAIApiKey, openAIOrgId);
break;
}

return builder;
}

private static string? ResolveModelPath(string? path)
{
if (string.IsNullOrEmpty(path)) return null;
if (File.Exists(path)) return path;
var relative = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, path);
if (File.Exists(relative)) return relative;
var projectRoot = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../../../../"));
var rootPath = Path.Combine(projectRoot, path);
if (File.Exists(rootPath)) return rootPath;
return null;
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... app-on-net
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»