Как я могу правильно изменить значение 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 для работы с моделью, а вместо этого использую:
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#»