AiTranslateController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\Http;
  5. use Illuminate\Support\Facades\Log;
  6. use App\Models\PaliText;
  7. class AiTranslateController extends Controller
  8. {
  9. /**
  10. * Display a listing of the resource.
  11. *
  12. * @return \Illuminate\Http\Response
  13. */
  14. public function index()
  15. {
  16. }
  17. /**
  18. * Store a newly created resource in storage.
  19. *
  20. * @param \Illuminate\Http\Request $request
  21. * @return \Illuminate\Http\Response
  22. */
  23. public function store(Request $request)
  24. {
  25. //
  26. return $this->fetch(strip_tags($request->get('origin')));
  27. }
  28. private function fetch($origin){
  29. $url = 'https://api.moonshot.cn/v1/chat/completions';
  30. $param = [
  31. "model" => "moonshot-v1-8k",
  32. "messages" => [
  33. ["role" => "system","content" => "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"],
  34. ["role" => "user","content" => $origin."\n请翻译上述巴利文。"],
  35. ],
  36. "temperature" => 0.3,
  37. ];
  38. $response = Http::withToken('sk-kwjHIMh3PoWwUwQyKdT3KHvNe8Es19SUiujGrxtH09uDQCui')
  39. ->post($url,$param);
  40. if($response->failed()){
  41. $this->error('http request error'.$response->json('message'));
  42. Log::error('http request error', ['data'=>$response->json()]);
  43. return $this->error($response->json(),200,200);
  44. }else{
  45. return $this->ok($response->json());
  46. }
  47. }
  48. /**
  49. * Display the specified resource.
  50. *
  51. * @param string $id
  52. * @return \Illuminate\Http\Response
  53. */
  54. public function show($id)
  55. {
  56. //
  57. $para = explode('-',$id);
  58. if(count($para) >= 2){
  59. $content = PaliText::where('book',$para[0])
  60. ->where('paragraph',$para[1])
  61. ->value('text');
  62. if(!empty($content)){
  63. return $this->fetch($content);
  64. }else{
  65. return $this->error('no content',200,200);
  66. }
  67. }else{
  68. return $this->error('参数错误',403,403);
  69. }
  70. }
  71. /**
  72. * Update the specified resource in storage.
  73. *
  74. * @param \Illuminate\Http\Request $request
  75. * @param int $id
  76. * @return \Illuminate\Http\Response
  77. */
  78. public function update(Request $request, $id)
  79. {
  80. //
  81. }
  82. /**
  83. * Remove the specified resource from storage.
  84. *
  85. * @param int $id
  86. * @return \Illuminate\Http\Response
  87. */
  88. public function destroy($id)
  89. {
  90. //
  91. }
  92. }