124 lines
4.6 KiB
C#
124 lines
4.6 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.IO;
|
||
using System.Net.Http;
|
||
using System.Net.Http.Headers;
|
||
using System.Windows;
|
||
using System.Windows.Controls;
|
||
using Microsoft.Extensions.DependencyInjection;
|
||
using Microsoft.Extensions.Hosting;
|
||
using Microsoft.Extensions.Logging;
|
||
using System.Text.Json;
|
||
using System.Threading;
|
||
using ArcGIS.Desktop.Core.Geoprocessing;
|
||
using LinkToolAddin.client;
|
||
using LinkToolAddin.host.llm;
|
||
using LinkToolAddin.host.llm.entity;
|
||
using LinkToolAddin.resource;
|
||
using log4net;
|
||
using log4net.Appender;
|
||
using log4net.Config;
|
||
using log4net.Layout;
|
||
using ModelContextProtocol.Server;
|
||
using Newtonsoft.Json;
|
||
|
||
namespace LinkToolAddin.ui.dockpane
|
||
{
|
||
/// <summary>
|
||
/// Interaction logic for DialogDockpaneView.xaml
|
||
/// </summary>
|
||
public partial class DialogDockpaneView : UserControl
|
||
{
|
||
private static ILog log = LogManager.GetLogger(typeof(DialogDockpaneView));
|
||
|
||
public DialogDockpaneView()
|
||
{
|
||
InitLogger();
|
||
InitializeComponent();
|
||
}
|
||
|
||
public void CallBack(string str,object obj)
|
||
{
|
||
log.Info($"CallBack {str}");
|
||
}
|
||
|
||
private async void TestServer_OnClick(object sender, RoutedEventArgs e)
|
||
{
|
||
log.Info("TestServer Clicked");
|
||
string res = await SseMcpClient.testGaodeMcp();
|
||
log.Info(res);
|
||
}
|
||
|
||
private async void Retrieve_Test()
|
||
{
|
||
log.Info("TestServer Clicked");
|
||
// string jsonRpcString = @"{""jsonrpc"":""2.0"",""method"":""CallArcGISPro.CallArcGISProTool"",""params"":{""toolName"":""analysis.Buffer"",""toolParams"":""[\""D:/01_Development/02_ArcGIS_Pro_Project/20250319_GisAi/Test.gdb/河流\"",\""D:/01_Development/02_ArcGIS_Pro_Project/20250319_GisAi/Test.gdb/河流buffer\"",\""100\""]""},""id"":1}";
|
||
DocDb docDb = new DocDb("sk-db177155677e438f832860e7f4da6afc", DocDb.KnowledgeBase.ArcGISProHelpDoc);
|
||
string query = "缓冲区";
|
||
KnowledgeResult knowledgeResult = await docDb.Retrieve(query);
|
||
log.Info(JsonConvert.SerializeObject(knowledgeResult.ChunkList));
|
||
}
|
||
|
||
private async void Request_Bailian_Test()
|
||
{
|
||
Llm bailian = new Bailian
|
||
{
|
||
api_key = "sk-db177155677e438f832860e7f4da6afc",
|
||
app_id = "6a77c5a68de64f469b79fcdcde9d5001",
|
||
};
|
||
string reponse = await bailian.SendChatAsync(new LlmJsonContent()
|
||
{
|
||
Model = "qwen-max",
|
||
Messages = new List<Message>()
|
||
{
|
||
new Message()
|
||
{
|
||
Role = "user",
|
||
Content = "你是谁"
|
||
}
|
||
},
|
||
Temperature = 0.7,
|
||
TopP = 1,
|
||
MaxTokens = 1000,
|
||
});
|
||
log.Info(reponse);
|
||
}
|
||
|
||
protected void InitLogger()
|
||
{
|
||
// 1. 创建控制台输出器(Appender)
|
||
var consoleAppender = new ConsoleAppender
|
||
{
|
||
Layout = new PatternLayout("%date [%thread] %-5level %logger - %message%newline"),
|
||
Threshold = log4net.Core.Level.Info // 仅输出 Info 及以上级别
|
||
};
|
||
consoleAppender.ActivateOptions(); // 激活配置
|
||
|
||
// 2. 创建文件滚动输出器(按大小滚动)
|
||
var fileAppender = new RollingFileAppender
|
||
{
|
||
File = Path.Combine("Logs", "linktool_app.log"), // 日志文件路径
|
||
AppendToFile = true, // 追加模式
|
||
RollingStyle = RollingFileAppender.RollingMode.Size, // 按文件大小滚动
|
||
MaxSizeRollBackups = 10, // 保留 10 个历史文件
|
||
MaximumFileSize = "1MB", // 单个文件最大 1MB
|
||
StaticLogFileName = true, // 固定文件名(否则自动追加序号)
|
||
Layout = new PatternLayout("%date [%thread] %-5level %logger - %message%newline"),
|
||
Threshold = log4net.Core.Level.Info // 仅输出 Info 及以上级别
|
||
};
|
||
fileAppender.ActivateOptions(); // 激活配置
|
||
|
||
// 3. 直接通过 BasicConfigurator 注册 Appender
|
||
BasicConfigurator.Configure(consoleAppender, fileAppender);
|
||
|
||
log = LogManager.GetLogger(typeof(DialogDockpaneView));
|
||
|
||
// 测试日志输出
|
||
log.Debug("Debug 日志(控制台可见)");
|
||
log.Info("Info 日志(控制台和文件可见)");
|
||
log.Error("Error 日志(严重问题)");
|
||
}
|
||
}
|
||
}
|