HunyuanService.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using TencentCloud.Hunyuan.V20230901;
  2. using TencentCloud.Hunyuan.V20230901.Models;
  3. namespace OASystem.API.OAMethodLib.HunYuanAPI
  4. {
  5. public class HunyuanService : IHunyuanService
  6. {
  7. private readonly HunyuanClient _hunyuanClient;
  8. /// <summary>
  9. /// 构造函数注入配置好的HunyuanClient
  10. /// </summary>
  11. /// <param name="hunyuanClient"></param>
  12. public HunyuanService(HunyuanClient hunyuanClient)
  13. {
  14. _hunyuanClient = hunyuanClient;
  15. }
  16. /// <summary>
  17. /// <inheritdoc />
  18. /// </summary>
  19. /// <param name="question"></param>
  20. /// <returns></returns>
  21. public async Task<string> ChatCompletionsHunyuan_t1_latestAsync(string question)
  22. {
  23. var request = new ChatCompletionsRequest
  24. {
  25. Model = "hunyuan-t1-latest",
  26. Messages = new Message[]
  27. {
  28. new Message
  29. {
  30. Role = "user",
  31. Content = question
  32. }
  33. },
  34. Stream = false,
  35. Temperature = 0.5f,
  36. TopP = 1.0f,
  37. // 其他参数根据需要设置
  38. };
  39. // 调用SDK方法
  40. var response = await _hunyuanClient.ChatCompletions(request);
  41. // 提取并返回模型生成的回答
  42. // 注意:响应结构可能包含多个Choice,这里取第一个。
  43. if (response.Choices != null && response.Choices.Length > 0)
  44. {
  45. return response.Choices[0].Message.Content?.Trim() ?? "模型未返回内容。";
  46. }
  47. return "模型未生成有效回答。";
  48. }
  49. public async Task<ChatCompletionsResponse> ChatCompletionsAsync(ChatCompletionsRequest request)
  50. {
  51. // 直接调用SDK方法
  52. return await _hunyuanClient.ChatCompletions(request);
  53. }
  54. /// <inheritdoc />
  55. public async Task<string> AskWithFileContextAsync(string fileContent, string question, string model = "hunyuan-lite")
  56. {
  57. // 1. 构建提示词:将文件内容作为上下文,与用户问题结合。
  58. // 这是一个简单示例,实际可根据需求设计更复杂的Prompt。
  59. string prompt = $"请根据以下文本内容回答问题。\n文本内容:{fileContent}\n问题:{question}";
  60. // 2. 使用SDK自带实体构建请求
  61. var request = new ChatCompletionsRequest
  62. {
  63. Model = model,
  64. Messages = new Message[]
  65. {
  66. new Message
  67. {
  68. Role = "user",
  69. Content = prompt
  70. }
  71. },
  72. // 可根据需要设置其他参数,如Stream, Temperature, TopP等
  73. // Stream = false,
  74. // Temperature = 0.5f,
  75. // TopP = 1.0f,
  76. };
  77. // 3. 调用SDK方法
  78. var response = await ChatCompletionsAsync(request);
  79. // 4. 提取并返回模型生成的回答
  80. // 注意:响应结构可能包含多个Choice,这里取第一个。
  81. if (response.Choices != null && response.Choices.Length > 0)
  82. {
  83. return response.Choices[0].Message.Content?.Trim() ?? "模型未返回内容。";
  84. }
  85. return "模型未生成有效回答。";
  86. }
  87. }
  88. }