본문 바로가기

Laravel44

Laravel Prism 사용하기(번역) - 7 - Prism 로드맵Prism은 대규모 언어 모델을 다루는 개발자들의 요구를 충족시키기 위해 지속적으로 진화하고 있습니다. 다음은 단기, 중기, 장기 목표로 분류된 우리의 개발 계획입니다.단기 목표우리의 즉각적인 초점은 기존 기능을 개선하고 중요한 기능을 추가하는 것입니다:text 개선: 더 정확하고 맥락적으로 관련성 있는 출력을 제공하기 위해 핵심 텍스트 생성 기능을 향상시킵니다.오류 처리 개선: 더 포괄적인 오류 처리 메커니즘을 구현하여 패키지의 견고성을 향상시킵니다.도구 사용 개선: Prism이 외부 도구를 통합하고 활용하는 방식을 최적화하여 개발자가 AI의 기능을 쉽게 확장할 수 있도록 합니다.text 이미지 지원: 텍스트와 함께 이미지를 생성하고 처리할 수 있는 기능을 추가하여 Prism의 다중 모.. 2024. 10. 15.
Laravel Prism 사용하기(번역) - 6 - 사용자 정의 제공자사용자 정의 제공자 만들기사용자 정의 제공자를 만들려면 EchoLabs\Prism\Contracts\Provider 인터페이스를 구현해야 합니다. 다음은 단계별 가이드입니다:제공자를 위한 새 클래스를 만듭니다. 예: MyCustomProvider.Provider 인터페이스에서 필요한 메서드를 구현합니다:phpmodel = $model; return $this; } public function text(TextRequest $request): ProviderResponse { // 사용자 정의 AI 제공자에게 요청을 보내는 로직을 구현하고 // ProviderResponse 객체를 반환합니다 }}text 메서드에서 다음을 수행해야.. 2024. 10. 15.
Laravel Prism 사용하기(번역) - 4 - 에이전트Prism의 AI 에이전트는 언어 모델이 비결정적인 방식으로 일련의 단계를 실행할 수 있게 합니다. 모델은 대화 컨텍스트, 사용자 입력, 이전 도구 호출 및 결과를 기반으로 도구 호출 결정을 내릴 수 있습니다.에이전트 구현하기Prism에서 에이전트를 구현하는 효과적인 접근 방식 중 하나는 LLM이 루프에서 다음 단계를 선택할 수 있도록 하는 것입니다. 도구를 withMaxSteps() 메서드와 결합함으로써, 각 단계에서 추론하고 컨텍스트를 기반으로 결정을 내리는 에이전트를 만들 수 있습니다.예시: 수학 문제 해결 에이전트Prism을 사용하여 수학 문제를 해결하는 에이전트를 만들어 보겠습니다. 이 에이전트는 수학 표현식을 평가하기 위해 호출할 수 있는 계산기 도구(PHP의 bcmath 확장을 사용).. 2024. 10. 15.
Laravel Prism 사용하기(번역) - 3 - 도구 호출AI 어시스턴트가 날씨를 확인하거나 실시간 데이터를 조회할 수 있기를 바라셨나요? Prism의 도구 호출 기능을 통해 이제 가능합니다! 이 강력한 기능을 통해 AI가 외부 서비스 및 데이터 소스와 상호 작용할 수 있어, 그 어느 때보다 다재다능하고 유용해졌습니다.도구란 무엇인가요?Prism에서 도구는 AI가 특정 작업을 수행하는 데 사용할 수 있는 특별한 객체입니다. AI의 스위스 아미 나이프라고 생각하세요 - 각 도구는 날씨 확인이나 데이터베이스 검색과 같은 특정 기능을 가지고 있습니다.Prism의 도구를 구성하는 요소는 다음과 같습니다:이름: 도구의 고유 식별자설명: 도구가 하는 일에 대한 간단한 설명매개변수: 도구가 작업을 수행하는 데 필요한 정보함수: 도구가 호출될 때 실행되는 실제 코드.. 2024. 10. 15.
Laravel Prism 사용하기(번역) - 2 - 텍스트 생성하기Prism은 대규모 언어 모델(LLM)을 사용하여 텍스트를 생성하는 강력하고 유연한 인터페이스를 제공합니다. 이 가이드에서는 텍스트 생성의 기본, 구성 옵션, 그리고 생성된 데이터에 접근하는 방법을 안내해 드리겠습니다.기본 사용법Prism을 사용하여 텍스트를 생성하려면 Prism 파사드와 text() 메서드를 사용합니다. 다음은 간단한 예시입니다:using(Provider::Anthropic, 'claude-3-sonnet') ->withPrompt('용감한 기사에 대한 짧은 이야기를 들려주세요.') ->generate();echo $response->text;다양한 제공자와 모델Prism은 여러 AI 제공자와 모델을 지원합니다. using() 메서드에서 이를 지정할 수 있습니다:usi.. 2024. 10. 15.
Laravel Prism 사용하기(번역) - 1 - Introduction대규모 언어 모델(LLM)은 인공지능과의 상호작용 방식을 혁신했습니다. 이를 통해 애플리케이션은 전례 없는 정교함으로 인간의 언어를 이해하고, 생성하며, 조작할 수 있게 되었습니다. 이러한 강력한 모델들은 개발자들에게 챗봇과 콘텐츠 생성기 제작부터 복잡한 AI 기반 애플리케이션 구축에 이르기까지 흥미로운 가능성을 열어줍니다.Prism은 LLM을 Laravel 프로젝트에 통합하는 과정을 단순화하여, 다양한 AI 제공자들과 작업할 수 있는 통합 인터페이스를 제공합니다. 이를 통해 개발자는 서로 다른 API와 구현 세부사항의 복잡성에 얽매이지 않고, 사용자를 위한 혁신적인 AI 기능을 만드는 데 집중할 수 있습니다.다음은 Prism을 사용하여 텍스트를 생성하는 간단한 예시입니다:Anthr.. 2024. 10. 14.
Laravel Wave 테마 만들기 Wave는 완전한 테마 지원을 제공하므로, 뷰를 별도의 테마로 분리할 수 있습니다. 이를 통해 사이트의 새로운 버전을 쉽게 생성하고 필요 시 이전 버전으로 되돌릴 수 있습니다. 또한 백엔드 로직과 프론트엔드를 많이 분리하는 데 도움이 됩니다. Create a Theme 테마를 생성하려면 `resources/views/themes` 폴더 안에 새 폴더를 만들어야 합니다. 이 폴더의 이름을 `sample-theme`라고 해봅시다. 그런 다음 이 폴더 안에 `sample-theme.json`이라는 파일을 만들어야 합니다. 다음과 같이 진행할 수 있습니다:1. `resources/views/themes/sample-theme` 폴더 생성.2. `sample-theme` 폴더 안에 `sample-theme.jso.. 2024. 7. 9.
Laravel Inertia - Shared data 공유 데이터 데이터 공유하기 애플리케이션 내의 여러 페이지에서 특정 데이터에 액세스해야 할 때가 있습니다. 예를 들어, 사이트 헤더에 현재 사용자를 표시해야 할 수 있습니다. 전체 애플리케이션에 걸쳐 각 응답에 이 데이터를 수동으로 전달하는 것은 번거롭습니다. 다행히 더 나은 방법이 있습니다: 공유 데이터. Inertia 의 서버 측 어댑터는 모든 요청에 공유 데이터를 사용할 수 있는 방법을 제공합니다. 이는 일반적으로 컨트롤러 외부에서 수행됩니다. 공유 데이터는 컨트롤러에서 제공된 페이지 props와 자동으로 병합됩니다. Laravel 애플리케이션에서는 일반적으로 HandleInertiaRequests 미들웨어를 통해 처리됩니다. 이 미들웨어는 서버 측 어댑터 설치 시 자동으로 설치됩니다. class .. 2024. 1. 18.
Laravel Inertia - Validation 유효성 검증 작동 방식 Inertia에서 서버 측 유효성 검증 오류를 처리하는 방법은 전통적인 XHR 기반 폼과 다릅니다. XHR 기반 폼에서는 422 응답에서 유효성 검증 오류를 캐치하고 폼의 오류 상태를 수동으로 업데이트해야 하지만, Inertia에서는 422 응답을 받지 않습니다. 대신, Inertia는 전통적인 전체 페이지 폼 제출과 매우 유사하게 작동합니다. 아래는 그 방법입니다: 먼저, Inertia를 사용하여 폼을 제출합니다. 서버 측 유효성 검증 오류가 있는 경우, 이러한 오류를 422 JSON 응답으로 반환하지 않습니다. 대신, 유저를 이전에 있던 폼 페이지로 리다이렉트하고 세션에 유효성 검증 오류를 플래시합니다. Laravel과 같은 일부 프레임워크는 이를 자동으로 처리합니다. 다음으로.. 2024. 1. 18.
Laravel Inertia - File uploads 파일 업로드 FormData 변환 파일(중첩된 파일 포함)이 포함된 Inertia 요청을 수행할 때, Inertia는 자동으로 요청 데이터를 FormData 객체로 변환합니다. 이 변환은 XHR을 통해 multipart/form-data 요청을 제출하기 위해 필요합니다. 데이터에 파일이 포함되어 있지 않더라도 요청이 항상 FormData 객체를 사용하도록 하려면 요청을 수행할 때 forceFormData 옵션을 제공하면 됩니다. import { router } from '@inertiajs/vue3' router.post('/users', data, { forceFormData: true, }) FormData 인터페이스에 대한 자세한 정보는 MDN 문서를 참조하세요. 버전 .. 2024. 1. 18.
Laravel Inertia - Forms 폼 폼 제출 전통적인 HTML 폼 제출 방식도 Inertia에서 사용할 수 있지만, 이는 전체 페이지를 새로고침하므로 권장되지 않습니다. 대신 폼 제출을 가로채고 Inertia를 사용하여 요청을 하는 것이 좋습니다. First name: Last name: Email: Submit 위 예제에서 볼 수 있듯이, Inertia를 사용할 때 클라이언트 측에서 폼 응답을 검사할 필요가 일반적으로 없습니다. 대신 서버 측 라우트/컨트롤러는 일반적으로 리다이렉트 응답을 발행합니다. 이 방식을 사용하면 Inertia 폼 제출을 처리하는 것이 전통적인 HTML 폼 제출을 처리하는 것과 매우 유사하게 느껴집니다. class UsersController extends Controller { public function i.. 2024. 1. 18.
Laravel Inertia - Manual visits Manual visits 수동 방문 링크를 생성하는 것 외에도, JavaScript를 통해 프로그래밍 방식으로 Inertia 방문/요청을 수동으로 수행할 수 있습니다. 이는 router.visit() 메소드를 통해 이루어집니다. import { router } from '@inertiajs/vue3' router.visit(url, { method: 'get', data: {}, replace: false, preserveState: false, preserveScroll: false, only: [], headers: {}, errorBag: null, forceFormData: false, onCancelToken: cancelToken => {}, onCancel: ().. 2024. 1. 18.
Laravel Inertia - Links 링크 Inertia 앱 내에서 다른 페이지로의 링크를 생성할 때는 일반적으로 Inertia 컴포넌트를 사용합니다. 이 컴포넌트는 표준 앵커() 링크를 둘러싼 가벼운 래퍼로, 클릭 이벤트를 가로채고 전체 페이지 새로고침을 방지합니다. 이를 통해 애플리케이션이 로드된 후 싱글 페이지 앱 경험을 제공합니다. 링크 생성하기 Inertia 링크를 생성하려면 Inertia 컴포넌트를 사용하세요. 이 컴포넌트에 제공된 모든 속성은 기본 HTML 태그로 전달됩니다. import { Link } from '@inertiajs/vue3' Home 기본적으로 Inertia는 링크를 앵커() 요소로 렌더링합니다. 그러나 as 속성을 사용하여 태그를 변경할 수 있습니다. import { Link } from &#.. 2024. 1. 18.
Laravel Inertia - Title & meta 타이틀 & 메타 Inertia로 구동되는 JavaScript 애플리케이션은 문서의 내에서 렌더링되므로, 문서의 타이틀 축약형 문서의 여러 Head 인스턴스 애플리케이션 전체에 걸쳐 여러 // About.vue import { Head } from '@inertiajs/vue3' Inertia는 한 번에 하나의 태그만 렌더링하지만, 다른 태그는 여러 인스턴스가 있을 수 있기 때문에 쌓입니다. 중복 태그를 피하기 위해 head-key 속성을 사용할 수 있으며, 이는 태그가 한 번만 렌더링되도록 보장합니다. 위 예제에서 태그에 대해 이를 설명합니다. 위 코드 예제는 다음 HTML을 렌더링합니다. Head 확장 실제 애플리케이션을 구축할 때, Inertia의 사용자 정의 컴포넌트를 생성한 후에는 .. 2024. 1. 18.
Laravel Inertia - Routing 라우팅 라우트 정의하기 Inertia를 사용할 때, 애플리케이션의 모든 라우트는 서버 측에서 정의됩니다. 이는 Vue Router나 React Router가 필요하지 않다는 것을 의미합니다. 대신, Laravel 라우트를 정의하고 해당 라우트에서 Inertia 응답을 반환하기만 하면 됩니다. 간편한 라우트 "FAQ"나 "about" 페이지처럼 해당 컨트롤러 메소드가 필요 없는 페이지가 있다면, Route::inertia() 메소드를 통해 컴포넌트로 직접 라우팅할 수 있습니다. Route::inertia('/about', 'About');URL 생성하기 일부 서버 측 프레임워크는 명명된 라우트에서 URL을 생성할 수 있습니다. 그러나 클라이언트 측에서 이러한 헬퍼에 접근할 수는.. 2024. 1. 18.