c# 调用文心一言大模型

打印 上一主题 下一主题

主题 1000|帖子 1000|积分 3000

注册账号

1.注册(百度智能云)

2.选择应用接入

3.创建应用接口

4.获取 API_KEY与 SECRET_KEY

代码实现


实现前先要在NuGet程序包下载两个库
Newtonsoft.Json;(我现在使用版本13.0.3)
RestSharp;(我现在使用版本106.2.0)
已下是代码的实现
namespace WindowsFormsApp1
{  
    public partial class Form1 : Form
    {  
        您的AccessKey ID
        //const string API_KEY = "OA6CUefHaF7CkTLc9k8KdWwu";
        您的AccessKey Secret
        //const string SECRET_KEY = "zlYO2QF641jVGqIlT0Hv31stYISvh6nj";
        // 您的AccessKey ID
        const string API_KEY = "AFJFrctHEskWpwGJ2jcGTA0s";
        // 您的AccessKey Secret
        const string SECRET_KEY = "Y59b4iZMBTjfWtSHXR01JQfG0dX2rOif";
        //文心一言会根据前面的问答回复信息
        List<ChatVO> messages = new List<ChatVO>();
        public Form1()
        {  
            InitializeComponent();
        }
        private void button2_Click(object sender, EventArgs e)
        {  
            var token = GetAccessToken();
            List<ChatVO> messages = new List<ChatVO>();
            string sayWord = tssl_show.Text;
            messages.Add(new ChatVO { role = "user", content = sayWord });
            if (string.IsNullOrEmpty(sayWord))
            {  
                MessageBox.Show("问题不能为空");
                tssl_show.Focus();
                return;
            }
            tb_answer.AppendText("用户: " + sayWord + "\r\n");
            //var chatMsg = GetChat(token, "key117258248", messages);
            var chatMsg = GetChat(token, "117261818", messages);
            ChatCompletionResponse response = JsonConvert.DeserializeObject<ChatCompletionResponse>(chatMsg);
            tb_answer.AppendText("文心一言: " + response.result + "\r\n");
        }
        static string GetChat(string accessToken, string userId, List<ChatVO> messages)
        {  
            WxyyChatReq wxyyChatReq = new WxyyChatReq
            {  
                user_id = userId,
                messages = messages,
                temperature = 0.95,
                top_p = 0.8,
                penalty_score = 1,
                disable_search = false,
                enable_citation = false,
                stream = false
            };
            //var url = $"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-3.5-128k?access_token={accessToken}";
            var url = $"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-4.0-8k-latest?access_token={accessToken}";
            var client = new RestClient(url);
            client.Timeout = -1;
            var request = new RestRequest(Method.POST);
            request.AddHeader("Content-Type", "application/json");
            var body = JsonConvert.SerializeObject(wxyyChatReq);
            request.AddParameter("application/json", body, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
            return response.Content;
        }
        /**
        * 使用 AK,SK 天生鉴权签名(Access Token)
        * @return 鉴权签名信息(Access Token)
        */
        static string GetAccessToken()
        {  
            var url = "https://aip.baidubce.com/oauth/2.0/token";
            var client = new RestClient(url);
            client.Timeout = -1;
            var request = new RestRequest(Method.POST);
            request.AddParameter("grant_type", "client_credentials");
            request.AddParameter("client_id", API_KEY);
            request.AddParameter("client_secret", SECRET_KEY);
            IRestResponse response = client.Execute(request);
            var result = JsonConvert.DeserializeObject<dynamic>(response.Content);
            return result.access_token.ToString();
        }
    }
    public class WxyyChatReq
    {  
        public string user_id { get; set; }
        public double temperature { get; set; }
        public double top_p { get; set; }
        public double penalty_score { get; set; }
        public bool disable_search { get; set; }
        public bool enable_citation { get; set; }
        //是否流式处理
        public bool stream { get; set; }
        //最大输出token数(token:字数一样平常为1:2)
        //public int max_output_tokens { get; set; }  
        public List<ChatVO> messages { get; set; }
    }
    /// <summary>
    /// 提问
    /// </summary>
    public class ChatVO
    {  
        public string role { get; set; }
        public string content { get; set; }
    }
    /// <summary>
    /// 结果
    /// </summary>
    public class ChatCompletionResponse
    {  
        public string id { get; set; }
        public int created { get; set; }
        public string result { get; set; }
    }
}

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表