测试代码入手学习参数配置
准备测试代码
我们学习从测试代码开始,选择一个模型
选择的大模型:通义千问2-VL-开源版-7B
然后再API示例中,找到C#的示例代码
测试代码:
using System.Net.Http.Headers;
using System.Text;
class Program
{
private static readonly HttpClient httpClient = new HttpClient();
static async Task Main(string[] args)
{
// 若没有配置环境变量,请用百炼API Key将下行替换为:string? apiKey = "sk-xxx";
string? apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY");
if (string.IsNullOrEmpty(apiKey))
{
Console.WriteLine("API Key 未设置。请确保环境变量 'DASHSCOPE_API_KEY' 已设置。");
return;
}
// 设置请求 URL 和内容
string url = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";
// 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
string jsonContent = @"{
""model"": ""qwen-plus"",
""messages"": [
{
""role"": ""system"",
""content"": ""You are a helpful assistant.""
},
{
""role"": ""user"",
""content"": ""你是谁?""
}
]
}";
// 发送请求并获取响应
string result = await SendPostRequestAsync(url, jsonContent, apiKey);
// 输出结果
Console.WriteLine(result);
}
private static async Task<string> SendPostRequestAsync(string url, string jsonContent, string apiKey)
{
using (var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"))
{
// 设置请求头
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// 发送请求并获取响应
HttpResponseMessage response = await httpClient.PostAsync(url, content);
// 处理响应
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
else
{
return $"请求失败: {response.StatusCode}";
}
}
}
}
修改配置
- 修改代码中apikey为自己的key,也可以改成自己配置在环境变量中的key
- 接着修改请求体
jsonContent
字符串里面的json对象了,修改model
为我们用的这个大模型代码,模型下面有个模型的代码就是他请求的model
,可以点击复制一下
https://bailian.console.aliyun.com/#/model-market/detail/qwen2-vl-7b-instruct
- 修改
jsonContent
里面的messages对象,这个就是对话的消息内容- 消息第一条为system消息,系统消息,给这次对话的助手设定一个角色
- 第二条是user消息,用户消息,为用户发给模型的消息内容
设置完成之后的jsonContent
如下:
然后就可以执行了
效果:
看到返回的消息了
修改消息内容
我们可以随意编辑messages里的消息内容content
效果:
测试流式输出
修改jsonContent参数,设置stream为true
string jsonContent =
@"{
""model"": ""qwen2-vl-7b-instruct"",
""stream"": true,
""messages"":messagesContent
}";
然后修改响应处理,使用流来接收,读取一行就输出
//流式输出
// 处理响应
if (response.IsSuccessStatusCode)
{
using (Stream stream = await response.Content.ReadAsStreamAsync())
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
string line;
while ((line = await reader.ReadLineAsync()) != null)
{
File.AppendAllText("test.txt", line);
Console.WriteLine(line);
Thread.Sleep(10);
}
}
}
else
{
Console.WriteLine(
$"请求失败: {response.StatusCode} - {await response.Content.ReadAsStringAsync()}"
);
}
效果:
设置流式输出的参数
设置stream_options参数,查看token使用数量
增加配置include_usage为true
"stream_options":{
"include_usage": true
}
完整的请求体
string jsonContent =
@"{
""model"": ""qwen2-vl-7b-instruct"",
""stream"": true,
""stream_options"":{
""include_usage"": true
},
""messages"": [
{
""role"": ""system"",
""content"": ""你是一个AI助手.""
},
{
""role"": ""user"",
""content"": ""你会写C#程序吗?写一个简单的实例""
}
]
}";
最终效果:
最后多一条显示token数量
视频教程
<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="94UABvKq-1733487162908" src="https://player.bilibili.com/player.html?aid=113586785556853"></iframe>.Net+AI开发入门HttpClient实现通义千问集成-从测试代码入门学习
标签:jsonContent,千问,stream,C#,content,测试代码,response,string From: https://blog.csdn.net/qq_39427511/article/details/144299472