当前位置:AIGC资讯 > AIGC > 正文

一次copilot问题处理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言 一、问题描述 二、解决步骤 1.询问关键词 2.询问问题 3.询问解决方案 总结

前言

记录一次使用copilot解决问题的流程,以及总结

提示:以下是本篇文章正文内容,下面案例可供参考

一、问题描述

最近在做IdentityServer4的项目,目的是搭建一个身份认证平台,提供给公司内部的项目进行登录验证,以及用户claim信息的存储。
初步按照IdentityServer4官方文档搭建demo项目后,成功生成了token,token通过jwt.io的解析如下:
可以看到该用户的claim域里面有一组键值对,email:“AliceSmith@email.com”, 标识了登录用户的邮箱。
但是当用该token去访问需要授权的api接口时,解析出的token信息则如下:
key改变了,由“email”变成了“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”,导致无法正常通过claim获取用户邮箱

二、解决步骤

这个问题就算百度也不好百度,所以这次使用copilot来进行处理

1.询问关键词

首先这个问题的关键在于“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”,为了搞清楚这是个什么,首先如此提问copilot:

由于对所需处理的问题没有相关知识储备,所以直接将关键词输入,获取一个整体的信息,根据回答可知:“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”是一个claim类型,他存储用户的电子邮件地址,从这里可以看出,email 跟 “http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”之间可能存在一定联系,遂接着往下问。

2.询问问题

了解获取了整体信息后,即可把当前遇到的问题直接抛出进行询问,如下:

可以看到,此处我提出的问题是一种近乎随意的表达,但copilot很好的理解了我的意思,但如果使用传统的搜索引擎,你需要花费跟多的时间在搜索方式上,如何措辞表达,如何确定关键字,甚至还有搜索字数的限制,因为传统搜索引擎并不那么智能。通过回答我们可以知道,“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”其实是 .NET 中System.Security.Claims.ClaimTypes 类定义的一个claim类型,而”email“则是我们自己定义的claim类型,有可能系统对此进行了一些处理,将我们定义的email映射成了“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”,知道这一点后,我们可以进行最后的提问了。

3.询问解决方案

了解了问题所在之后,我们可以向copilot询问解决方案,如下图所示是我询问的方式:

copilot告诉我,这是因为JwtSecurityTokenHandler 类的 InboundClaimTypeMap 属性对字段进行了自动映射,这也证实了我之前的猜想,随即copilot给出了解决方案,在配置jwtbearer的时候,添加如下代码来改变映射:

                    options.SecurityTokenValidators.Clear();
                    options.SecurityTokenValidators.Add(new JwtSecurityTokenHandler
                    {
                        InboundClaimTypeMap = new Dictionary<string, string>()
                    });

对应到我自己的项目里面则是这样:

更改过后,我再次访问需要授权的api接口时,解析出来的token信息就正常了,如下:

至此,问题完美解决。

总结

此次问题的解决,仰赖于copilot的强大性能,得益于ai的语言处理能力,以及对上下文的关联能力,ai将会更适合用于处理程序员的问题,是一个比传统搜索引擎更好用的问题解决工具。基于此次实践,我在此总结出如何向ai进行提问的一套思维流程。
1.关键词理解:
直接输入关键词,先行获得一个你面临问题的总体理解,了解清楚概念。这将有助于你对这个问题进行深入思考,进而提问。
2.提出问题
对于ai来说,你的措辞问题都不是问题,所以在有了第一步的概念理解后,你可以随意的提问,不用考虑格式以及关键字上的要求,减少你码字的时间。
3.获取解决方案
最后一步就是请求ai给出解决问题的方案,由于ai具有联系上下文的能力,所以能根据我们之前的聊天谈话内容给出更为合适的建议,这将大大提高问题成功解决的概率。

最后再说一句 : 咱们copilot真是太好用啦!!

更新时间 2024-06-06