基于Microsoft SemanticKernel和GPT4实现一个智能翻译服务

这篇具有很好参考价值的文章主要介绍了基于Microsoft SemanticKernel和GPT4实现一个智能翻译服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今年.NET Conf China 2023技术大会,我给大家分享了 .NET应用国际化-AIGC智能翻译+代码生成的议题

.NET Conf China 2023分享-.NET应用国际化-AIGC智能翻译+代码生成

今天将详细的代码实现和大家分享一下。

一、前提准备

1. 新建一个Console类的Project

2. 引用SK的Nuget包,SK的最新Nuget包

dotnet add package Microsoft.SemanticKernel --version 1.4.0
<ItemGroup>
    <PackageReference Include="Microsoft.SemanticKernel" Version="1.4.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>

3. 在Azure OpenAI Service中创建一个GPT4的服务,这个可能大家没有账号,那就先看代码如何实现吧

部署好GPT4模型后,可以拿到以下三个重要的值

Azure OpenAI Deployment Name
Azure OpenAI Endpoint
Azure OpenAI Key
二、编写翻译使用的Prompt
 {{$input}}
请将上面的输入翻译为英文,不要返回任何解释说明,
请扮演一个美国电动汽车充电服务运营商(精通中文和英文),用户的输入数据是JSON格式,例如{"1":"充电站", "2":"充电桩"}, 
如果不是JSON格式,请返回无效的输入。
请使用以下专业术语进行翻译
 {
    "充电站":"Charging station",
    "电站":"Charging station",
    "场站":"Charging station",
    "充电桩":"Charging point",
    "充电终端":"Charging point",
    "终端":"Charging point",
    "电动汽车":"Electric Vehicle",
    "直流快充":"DC Fast Charger",
    "超级充电站":"Supercharger",
    "智能充电":"Smart Charging",
    "交流慢充":"AC Slow Charging"
}
翻译结果请以JSON格式返回,例如 {"1":"Charging station", "2":"Charging point"}

类似的还有葡萄牙下的翻译Prompt

{{$input}}
请将上面的输入翻译为葡萄牙语,不要返回任何解释说明,请扮演一个巴西的电动汽车充电服务运营商(精通葡萄牙语、中文和英文)
用户的输入数据是JSON格式,例如{"1":"充电站", "2":"充电桩"}, 如果不是JSON格式,请返回无效的输入
请使用以下专业术语进行翻译
 {
  "充电站": "Estação de carregamento",
  "电站": "Estação de carregamento",
  "场站": "Estação de carregamento",
  "充电桩": "Ponto de carregamento",
  "充电终端": "Ponto de carregamento",
  "终端": "Ponto de carregamento",
  "电动汽车": "Veículo Elétrico",
  "直流快充": "Carregador Rápido DC",
  "超级充电站": "Supercharger",
  "智能充电": "Carregamento Inteligente",
  "交流慢充": "Carregamento AC Lento"
}
请以JSON格式返回,例如 {"1":"Estação de carregamento", "2":"Ponto de carregamento"}

在项目工程下新建Plugins目录和TranslatePlugin子目录,同时新建Translator_en和Translator_pt等多个子目录

基于Microsoft SemanticKernel和GPT4实现一个智能翻译服务

 config.json文件下的内容如下:

{
    "schema": 1,
    "type": "completion",
    "description": "Translate.",
    "completion": {
         "max_tokens": 2000,
         "temperature": 0.5,
         "top_p": 0.0,
         "presence_penalty": 0.0,
         "frequency_penalty": 0.0
    },
    "input": {
         "parameters": [
              {
                   "name": "input",
                   "description": "The user's input.",
                   "defaultValue": ""
              }
         ]
    }
}

三、Translator翻译类,实现文本多语言翻译

这个类主要实现将用户输入的文本(系统处理为JSON格式),翻译为指定的语言

using System.Runtime.InteropServices;
using Microsoft.SemanticKernel;
using Newtonsoft.Json;

namespace LLM_SK;
public class Translator
{
    Kernel kernel;
    public Translator(Kernel kernel)
    {
        this.kernel = kernel;
    }

    public IDictionary<int, string> Translate(IDictionary<int, string> textList, string language)
    {
        var pluginDirectory = Path.Combine(System.IO.Directory.GetCurrentDirectory(), "Plugins/TranslatePlugin");
        var plugin = kernel.CreatePluginFromPromptDirectory(pluginDirectory, "Translator_" + language + "");        

        var json = JsonConvert.SerializeObject(textList);      

        if (!string.IsNullOrEmpty(json))
        {
            var output = kernel.InvokeAsync(plugin["Translator_" + language + ""], new() { ["input"] = json }).Result.ToString();
            if (!string.IsNullOrWhiteSpace(output))
            {
                Console.WriteLine(output);
                return JsonConvert.DeserializeObject<Dictionary<int, string>>(output);
            }
        }

        return new Dictionary<int, string>();
    }
}

这个类中构造函数中接收传入的Kernel对象,这个Kernel对象是指

Microsoft.SemanticKernel.Kernel  
//
// Summary:
//     Provides state for use throughout a Semantic Kernel workload.
//
// Remarks:
//     An instance of Microsoft.SemanticKernel.Kernel is passed through to every function
//     invocation and service call throughout the system, providing to each the ability
//     to access shared state and services.
public sealed class Kernel

暂且理解为调用各类大模型的Kernel核心类,基于这个Kernel实例对象完成大模型的调用和交互

另外,上述代码中有个Prompt模板文件读取的操作。

        var pluginDirectory = Path.Combine(System.IO.Directory.GetCurrentDirectory(), "Plugins/TranslatePlugin");
        var plugin = kernel.CreatePluginFromPromptDirectory(pluginDirectory, "Translator_" + language + "");    

基于Microsoft SemanticKernel和GPT4实现一个智能翻译服务

 从Plugins/TranslatePlugin目录下读取指定的KernelPlugin,例如Translator_en英语翻译插件和Translator_pt 葡萄牙翻译插件

 var output = kernel.InvokeAsync(plugin["Translator_" + language + ""], new() { ["input"] = json }).Result.ToString();

 调用KernelFunction方式实现GPT4大模型调用

 //
    // Summary:
    //     Invokes the Microsoft.SemanticKernel.KernelFunction.
    //
    // Parameters:
    //   function:
    //     The Microsoft.SemanticKernel.KernelFunction to invoke.
    //
    //   arguments:
    //     The arguments to pass to the function's invocation, including any Microsoft.SemanticKernel.PromptExecutionSettings.
    //
    //
    //   cancellationToken:
    //     The System.Threading.CancellationToken to monitor for cancellation requests.
    //     The default is System.Threading.CancellationToken.None.
    //
    // Returns:
    //     The result of the function's execution.
    //
    // Exceptions:
    //   T:System.ArgumentNullException:
    //     function is null.
    //
    //   T:Microsoft.SemanticKernel.KernelFunctionCanceledException:
    //     The Microsoft.SemanticKernel.KernelFunction's invocation was canceled.
    //
    // Remarks:
    //     This behaves identically to invoking the specified function with this Microsoft.SemanticKernel.Kernel
    //     as its Microsoft.SemanticKernel.Kernel argument.
    public Task<FunctionResult> InvokeAsync(KernelFunction function, KernelArguments? arguments = null, CancellationToken cancellationToken = default(CancellationToken))
    {
        Verify.NotNull(function, "function");
        return function.InvokeAsync(this, arguments, cancellationToken);
    }

 继续封装GPT4TranslateService,构造Microsoft.SemanticKernel.Kernel 类实例。

using System.Globalization;
using Microsoft.SemanticKernel;

namespace LLM_SK;
public class GPT4TranslateService
{    
    public IDictionary<int,string> Translate(IDictionary<int, string> texts, CultureInfo cultureInfo)
    {
        var kernel = BuildKernel();
        var translator = new Translator(kernel);
        return translator.Translate(texts, cultureInfo.TwoLetterISOLanguageName );
    }

    //私有方法,构造IKernel
    private Kernel BuildKernel()
    {
        var builder = Kernel.CreateBuilder();
        builder.AddAzureOpenAIChatCompletion(
                 "xxxxgpt4",                  // Azure OpenAI Deployment Name
                 "https://****.openai.azure.com/", // Azure OpenAI Endpoint
                 "***************");      // Azure OpenAI Key

        return  builder.Build();
   }
}

四、测试调用

这里我们设计了2种语言,英语和葡萄牙的文本翻译

var culture = new CultureInfo("en-US");
var translator = new GPT4TranslateService();
translator.Translate(new Dictionary<int, string>(){{ 1,"电站"}, {2,"终端不可用"},{3,"充电桩不可用"} ,
{4,"场站"},{5,"充电站暂未运营" }},culture);

culture = new CultureInfo("pt-BR");
translator.Translate(new Dictionary<int, string>(){{ 1,"电站"}, {2,"终端不可用"},{3,"充电桩不可用"} ,
{4,"场站"},{5,"充电站暂未运营" }},culture);

输出的结果

{"1":"Charging station","2":"Charging point unavailable","3":"Charging station unavailable","4":"Charging station","5":"Charging station not in operation yet"}
{"1":"Estação de carregamento","2":"Ponto de carregamento não está disponível","3":"Ponto de carregamento não está disponível","4":"Estação de carregamento","5":"A estação de carregamento ainda não está em operação"}

五、总结

以上是基于SemanticKernel和GPT4实现一个智能翻译服务的Demo和框架,大家可以基于这个示例继续完善,增加更多动态的数据和API调用,例如将JSON数据写入数据库

同时还可以记录翻译不稳定的异常,手工处理或者继续完善Prompt。

 

周国庆

2024/2/17文章来源地址https://www.toymoban.com/news/detail-825328.html

到了这里,关于基于Microsoft SemanticKernel和GPT4实现一个智能翻译服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 不用GPT4,如何让你的AI助理更加智能

    小伙伴们新年好啊,颓废的 2023 年总算是过去了,过去这一年因为自己的状态不太好,一直也没怎么更新,2024 年是时候重新拾起行囊再出发啦! 去年年底我写过一篇《大模型小助手,Mac 工程师如何拥有自己的人工智能》,在那篇文章里我介绍了如何利用自己手头的计算资源

    2024年02月22日
    浏览(38)
  • 一个最新国内可用的免费GPT4,Midjourney绘画网站+使用教程

    ChatGPT GPT4.0,Midjourney绘画,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和用户进行创作交流。 然而,GPT-4对普通用户来说都是需要额外付费才可以使用。所以今天小编就整理一个真正免费的

    2024年02月04日
    浏览(109)
  • OPEN AI接入MidJourney 画图支持GPT4中文智能优化效果惊艳

    OPEN AI 平台 开放免费AI聚合服务平台,提供应用程序一键接入AI画图,对话的能力。 目前已经支持GPT3和GPT4普通对话和流式对话。 支持GPT画图和MidJourney 画图。 后续还会接入更多功能 在线接入案例演示体验 这里主要展示一下MJ的强大的画图功能 平台发展版本来龙去脉 如果大

    2024年02月12日
    浏览(42)
  • openai开放gpt3.5-turbo模型api,使用python即可写一个基于gpt的智能问答机器人

    使用 pip 安装openai库,注意 gpt3.5-turbo 模型需要 python=3.9 的版本支持,本文演示的python版本是 python==3.10.10 需要提前在 openai 官网上注册好账号,然后打开 https://platform.openai.com/account/api-keys 就可以创建接口 keys 每个账号注册完成会有18美元在里面,每次调用api,就会花费里面的

    2024年02月06日
    浏览(63)
  • 分享一个国内可用的免费GPT4-AI提问AI绘画网站工具

    ChatGPT GPT4.0,Midjourney绘画,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和用户进行创作交流。 然而,GPT-4对普通用户来说都是需要额外付费才可以使用。所以今天小编就整理一个真正免费的

    2024年02月05日
    浏览(63)
  • GPT4助力Python数据分析与可视化、人工智能建模及论文高效撰写

    详情点击链接:GPT4助力Python数据分析与可视化、人工智能建模及论文高效撰写 第一: GPT 4 基础入门 1、ChatGPT概述(GPT-1、GPT-2、GPT-3、GPT-3.5、GPT-4模型的演变) 2、ChatGPT对话初体验(注册与充值、购买方法) 3、GPT-4与GPT-3.5的区别,以及与国内大语言模型(文心一言、星火等

    2024年01月18日
    浏览(62)
  • 智能AI写作系统+ChatGPT程序源码搭建部署教程+支持GPT4.0/AI绘画

    SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!SparkAi程序使用Nestjs和Vue3框架技术,持续集

    2024年02月09日
    浏览(57)
  • ChatGPT3.5、GPT4.0、DALL·E 3和Midjourney对话与绘画智能体验

    MidTool(https://www.aimidtool.com/)是一个集成了多种先进人工智能技术的助手,它融合了ChatGPT3.5、GPT4.0、DALL·E 3和Midjourney等不同的智能服务,提供了一个多功能的体验。下面是这些技术的简要介绍: ChatGPT3.5 : ChatGPT3.5是OpenAI开发的自然语言处理模型的一个版本,它基于GPT-3技术

    2024年02月03日
    浏览(47)
  • 基于GPT4模型编写基于flask和mysql的web网站教程

    项目地址 :https://download.csdn.net/download/u014541881/88098143 我 :请你帮我用flask写一个网站,功能如下: 1,有个主界面,主界面最上方是菜单栏,有一张高清大图作为网页主界面背景,菜单栏右上角有简介、登陆、注册、左上角始终显示首页,方便可以一键跳转回主页。 2,菜单

    2024年02月15日
    浏览(38)
  • 智能AI系统ChatGPT系统源码+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型

    SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型+国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图

    2024年02月03日
    浏览(142)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包