| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Http;
- use Illuminate\Support\Facades\Log;
- use App\Models\PaliText;
- class AiTranslateController extends Controller
- {
- /**
- * Display a listing of the resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function index() {}
- /**
- * Store a newly created resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @return \Illuminate\Http\Response
- */
- public function store(Request $request)
- {
- //
- return $this->fetch(strip_tags($request->get('origin')));
- }
- private function fetch($origin, $engin = 'kimi', $prompt_pre = '', $prompt_suf = '请翻译上述巴利文。')
- {
- $api = config('mint.ai.accounts');
- $selected = array_filter($api, function ($value) use ($engin) {
- return $value['name'] === $engin;
- });
- if (!is_array($selected) || count($selected) === 0) {
- return $this->error('no engin name', 200, 200);
- }
- $url = $selected[0]['api_url'];
- $param = [
- "model" => $selected[0]['model'],
- "messages" => [
- ["role" => "system", "content" => "你是翻译人工智能助手,bhikkhu 为专有名词,不可翻译成其他语言。"],
- ["role" => "user", "content" => "{$prompt_pre}{$origin}\n{$prompt_suf}"],
- ],
- "temperature" => 0.3,
- ];
- $response = Http::withToken($selected[0]['token'])
- ->post($url, $param);
- if ($response->failed()) {
- $this->error('http request error' . $response->json('message'));
- Log::error('http request error', ['data' => $response->json()]);
- return $this->error($response->json(), 200, 200);
- } else {
- return $this->ok($response->json());
- }
- }
- /**
- * Display the specified resource.
- *
- * @param string $id
- * @return \Illuminate\Http\Response
- */
- public function show(Request $request, $id)
- {
- //
- $para = explode('-', $id);
- if (count($para) >= 2) {
- $content = PaliText::where('book', $para[0])
- ->where('paragraph', $para[1])
- ->value('text');
- if (!empty($content)) {
- return $this->fetch($content, $request->get('engin', config('mint.ai.default')));
- } else {
- return $this->error('no content', 200, 200);
- }
- } else {
- return $this->error('参数错误', 403, 403);
- }
- }
- /**
- * Update the specified resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function update(Request $request, $id)
- {
- //
- }
- /**
- * Remove the specified resource from storage.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function destroy($id)
- {
- //
- }
- }
|