모델에서 응답 생성
사용자 프롬프트가 제공되면 AI 모델에서 텍스트 응답을 가져옵니다.
다음도 참조하십시오.
옵션
-
계정 이름은 사용할 AI 계정 이름의 텍스트 표현식입니다. 현재 파일에서 AI 계정 구성 스크립트 단계를 사용하여 계정을 설정하고 이 스크립트 단계가 실행되기 전에 언제든지 이 이름을 할당하십시오.
-
모델은 사용할 텍스트 생성 모델의 이름입니다. 모델 이름을 텍스트 표현식으로 지정합니다. 지원되는 모델은 FileMaker 기술 사양을 참조하십시오.
-
사용자 프롬프트는 모델에 보낼 자연어 요청 또는 질문에 대한 텍스트 표현식이며, 이는 일반적으로 사용자가 요청한 것입니다.
-
에이전트 모드는 이 스크립트 단계가 자동화된 도구 상호 작용을 처리하는 방법을 제어합니다.
-
켜기: 모델이 최종 결과에 도달할 때까지 도구를 반복적으로 호출할 수 있는 자동화된 다단계 상호 작용을 활성화합니다.
-
끄기: 단일 상호 작용을 수행하고 도구 호출을 실행하거나 응답에서 결과를 반환하지 않고 첫 번째 도구 호출 후에 중지하여 수동 처리 및 디버깅을 허용합니다. 도구 호출이 이루어지지 않으면 응답에서 모델의 결과를 반환합니다.
-
-
응답은 스크립트 단계의 결과를 저장할 필드 또는 변수를 지정합니다. 필드를 지정하고 스트림을 선택한 경우 해당 필드는 현재 레이아웃에 있어야 합니다.
-
지침은 모델에 대한 추가 컨텍스트 또는 행동 지침을 제공하는 텍스트 표현식입니다.
-
메시지는 이전 상호 작용의 모델 컨텍스트를 제공하기 위해 메시지 기록을 포함하는 필드 또는 변수를 지정합니다. 메시지는 JSON 대상체의 배열입니다. 각 JSON 대상체는 메시지 텍스트(
콘텐츠
)와 콘텐츠(역할
)를 제공한 사용자("user"
) 또는 모델("assistant"
)에 대한 키-값 쌍을 포함해야 합니다. 예를 들어 다음과 같습니다.복사[
{
"content": "What is the temperature in Cupertino?",
"role": "user"
},
{
"content": "The temperature in Cupertino is 72 degrees Fahrenheit.",
"role": "assistant"
}
] -
메시지 기록 저장 대상은 스크립트 단계가 메시지 기록을 저장하는 변수를 지정합니다. 형식은 메시지와 동일하며, 이 스크립트 단계의 현재 실행에 대한 메시지 쌍이 끝에 추가되었습니다.
현재 스크립트가 종료된 후에도 메시지 기록을 유지하려면 전역 변수를 사용하거나(FileMaker 클라이언트 세션이 종료될 때까지 유지됨) 변수의 값을 필드에 저장합니다. 변수 사용하기 또는 필드 설정 스크립트 단계를 참조하십시오.
-
메시지 기록 수는 메시지 기록 저장 대상에 지정된 변수에 포함할 이전 메시지 쌍(사용자 질문 및 보조 답변)의 수를 제어하는 숫자 표현식입니다.
-
온도는 프롬프트에 대한 모델의 응답의 무작위성 또는 창의성을 제어합니다. 낮은 값은 더 결정적이고 사실적인 결과를 산출합니다. 높은 값은 더 창의적이고 예상치 못하거나 일관성이 떨어지는 결과를 생성합니다. 사용 중인 특정 모델에 대한 유효한 범위는 모델 제공자의 문서를 참조하십시오.
-
도구 정의는 모델이 처리 중에 호출할 수 있는 사용 가능한 도구의 JSON 배열을 지정합니다. 아래의 "도구 정의"를 참조하십시오.
-
모델의 도구 호출은 모델이 만든 도구 호출에 대한 정보를 저장할 위치를 지정합니다. 이는 디버깅 또는 모델의 도구 사용을 감사하는 데 유용할 수 있습니다.
-
스트림은 응답이 전달되는 방식을 제어합니다.
-
켬: 응답이 검색되고 점진적으로 전달됩니다(단어별 또는 구문 단위). 이를 통해 FileMaker 클라이언트가 더 반응성을 느낄 수 있습니다.
-
끔: 전체 응답을 사용할 수 있게 되기 전에 검색됩니다. 이로 인해 완전한 응답을 기다리는 동안 FileMaker 클라이언트가 응답하지 않는 것처럼 보일 수 있습니다.
-
-
매개 변수는 모델 제공자가 지원하는 추가 매개 변수에 대한 키-값 쌍으로 구성된 JSON 객체의 텍스트 표현식입니다. 예를 들어 다음과 같습니다.
{"온도": 0.7, "seed": 42}
. 지원되는 매개 변수의 키 이름과 유효한 범위는 모델 공급자의 문서를 참조하십시오. -
웹 뷰어에서 JavaScript 수행은 스크립트 단계가 완료된 후 대상 웹 뷰어에서 수행할 JavaScript 코드를 지정합니다. 이 옵션은 다음 스크립트 단계로 웹 뷰어에서 JavaScript 실행 스크립트 단계를 실행하는 것과 유사하며, 여기에서 응답 대상을 JavaScript 함수로 전달하고 스트림 옵션이 켬일 때 응답 대상을 웹 뷰어로 스트리밍할 수 있다는 점은 제외됩니다.
-
웹 뷰어는 현재 레이아웃에서 웹 뷰어의 객체 이름을 지정합니다.
-
함수 이름은 웹 뷰어에서 호출할 자바스크립트 함수의 이름입니다.
-
호환성
제품 | 지원 |
FileMaker Pro | 예 |
FileMaker Go | 예 |
FileMaker WebDirect | 예 |
FileMaker Server | 예 |
FileMaker Cloud | 예 |
FileMaker Data API | 예 |
사용자 설정 웹 발행 | 예 |
다음 버전에서 시작됨
22.0
설명
이 스크립트 단계는 맞춤형 앱과 AI 모델 간의 다단계 상호 작용을 용이하게 하여 모델이 필요할 때 도구 호출을 통해 데이터에 액세스하고 조작할 수 있도록 합니다. 스크립트 단계는 에이전트 모드 옵션을 기반으로 두 가지 다른 모드로 작동하며, 각각 상호 작용에 대한 서로 다른 수준의 자동화 및 제어를 제공합니다.
이 스크립트 단계와 모델 간의 상호 작용은 일반적으로 다음 단계를 따릅니다.
-
이 스크립트 단계는 사용자 프롬프트, 지침, 메시지의 대화 컨텍스트 및 사용 가능한 도구 정의를 구성된 모델로 보냅니다.
-
모델은 프롬프트를 분석하고 직접적인 응답을 제공할 수 있는지 아니면 추가 정보를 수집하거나 조치를 수행하기 위해 도구를 사용해야 하는지 여부를 결정합니다.
-
도구가 필요한 경우, 모델은 사용 가능한 도구 정의와 사용자의 요청에 따라 적절한 매개 변수로 도구 호출을 생성합니다.
-
이 스크립트 단계는 모델에서 도구 호출을 수신하고 FileMaker 클라이언트가 이를 실행합니다. 도구 실행에는 SQL 쿼리와 같은 미리 정의된 도구 또는 사용자 설정 함수에 대한 호출이 포함될 수 있습니다.
-
이 스크립트 단계는 도구 실행 결과를 모델로 다시 보내 처리를 계속하는 데 필요한 데이터 또는 확인을 모델에 제공합니다.
-
모델이 프롬프트를 완전히 해결하기 위해 추가 도구가 필요하다고 판단하는 경우 더 많은 도구 호출을 생성할 수 있습니다(3~5단계 반복). 이 반복적인 과정은 모델이 포괄적인 응답을 제공할 충분한 정보를 얻을 때까지 계속됩니다.
-
모델이 필요한 모든 도구 상호 작용을 완료한 후, 도구 결과를 통합하고 원래 사용자 프롬프트를 다루는 최종 응답을 생성합니다.
-
이 스크립트 단계는 최종 응답을 수신하여 지정된 응답 대상에 저장하고 선택적으로 메시지 기록 저장 대상에서 상호 작용 기록을 업데이트합니다.
에이전트 모드 옵션은 상호 작용이 처리되는 방법을 결정합니다.
-
켜기: 도구와의 자동화된 다단계 상호 작용을 활성화하여 전체 워크플로우(1~8단계)를 자동으로 실행합니다. AI 모델이 요청을 이행하기 위해 도구가 필요하다고 판단하면 자동으로 적절한 도구를 호출하고 최종 결과에 도달할 때까지 처리를 계속합니다. 모델은 필요에 따라 여러 라운드의 도구 호출을 할 수 있으며, 각 라운드는 이전 도구 실행의 결과를 기반으로 구축됩니다. 이 모드는 여러 테이블에서 데이터 분석, 보고서 생성 또는 다단계 작업 수행과 같이 여러 도구 상호 작용이 필요한 복잡한 작업을 위한 모드입니다.
-
끄기: AI 모델과 단일 상호 작용을 수행하고, 1~3단계만 실행하고 첫 번째 도구 호출 후 중지합니다. 모델이 도구가 필요하다고 판단하면 스크립트 단계는 중지되고 도구를 자동으로 실행하는 대신 모델에서 도구 호출l에서 도구 호출 정보를 반환합니다. 이 모드는 도구 상호 작용을 디버깅하거나, 모델이 사용하려는 도구를 이해하거나, 도구 실행을 수동으로 제어하고 싶을 때 유용합니다. 도구 호출을 검토한 다음 수동으로 실행할지 아니면 접근 방식을 수정할지 결정할 수 있습니다.
이 스크립트 단계와 모델 사이의 정보 흐름은 AI 기반 기능을 활성화하면서 민감한 데이터가 안전하게 유지되도록 보장합니다. 모델은 프롬프트, 지침 및 도구 결과를 통해 명시적으로 제공된 정보만 수신하며 FileMaker 데이터베이스 또는 파일에 직접 액세스할 수 없습니다. 도구 호출은 제어된 FileMaker 환경 내에서 실행되므로 모델의 분석 및 추론 기능을 활용하면서 FileMaker 계정 및 권한을 통해 데이터 액세스 및 작업에 대한 완전한 제어를 유지할 수 있습니다.
도구 정의
도구 사용(일부 모델 제공자는 함수 호출이라고도 함)을 사용하면 모델이 FileMaker Pro 앱에 다시 호출하여 모델이 최종 응답을 생성하는 데 필요한 작업을 수행하거나 제공할 수 있습니다. 에이전트 모드에서 모델은 완료될 때까지 여러 도구를 반복적으로 호출할 수 있습니다. 도구 정의 옵션에서 다음 도구를 정의할 수 있습니다.
-
execute_sql
: 지정된 SQL 쿼리를 수행하는 미리 정의된 도구로, 자연어로 SQL 쿼리 수행 스크립트 단계와 동일한 방식으로 모델에 의해 전달된 SQL 문을 실행할 수 있습니다. -
retrieve_image
: SQL 쿼리, 테이블 이름 및 컨테이너 필드 이름으로 지정된 컨테이너 필드에서 이미지를 검색하는 사전 정의된 도구입니다. -
사용자 설정 함수: 파일에 정의된 모든 사용자 설정 함수입니다. 사용자 설정 함수 사용하기를 참조하십시오.
도구 정의는 모델 제공자가 요구하는 JSON 형식을 사용하여 지정됩니다. 일반적으로 정의는 각각 도구의 이름, 도구가 무엇을 하는지에 대한 자세한 설명과 모델을 사용할 때 어떤 규칙을 따라야 하는지에 대한 자세한 설명, 그리고 각 입력 매개 변수에 대해 이름, 데이터 유형 및 설명을 지정하는 대상체의 배열입니다. 모델이 도구를 안정적으로 사용하기 위해 필요한 만큼 자세한 설명이 있어야 합니다. 미리 정의된 도구를 사용하는 경우, 아래에 제공된 정의를 사용하여 시작하십시오. 필요한 경우, 이를 수정하여 사용하는 모델에 대한 최적의 결과를 얻을 수 있습니다.
도구 정의를 디버깅하는 데 도움이 되도록 모델에서 도구 호출 옵션을 모델이 도구를 호출하는 방법 또는 여부를 확인할 수 있는 필드 또는 변수로 설정합니다. 이렇게 하면 도구 정의에 제공하는 설명에서 추가하거나 변경해야 할 사항을 밝히는 데 도움이 될 수 있습니다.
도구 정의 및 도구 호출에 사용되는 특정 JSON 형식은 모델 공급자의 문서를 참조하십시오. 예를 들어, Anthropic, Cohere 및 OpenAI.
execute_sql
함수 이름 |
|
|
함수 설명 |
|
|
매개 변수 이름 |
|
|
매개 변수 설명 |
모델이 사용할 스키마를 이 설명의 끝에 추가합니다. 포함하려는 테이블 발생에 대해 GetTableDDL 함수에서 반환한 대로 데이터 정의 언어(DDL)의 스키마를 제공합니다. |
반환: SQL 쿼리의 결과를 문자열로 합니다.
retrieve_image
함수 이름 |
|
|
함수 설명 |
|
|
매개 변수 1 이름 |
|
|
매개 변수 1 설명 |
모델이 사용할 스키마를 이 설명의 끝에 추가합니다. 포함하려는 테이블 발생에 대해 GetTableDDL 함수에서 반환한 대로 데이터 정의 언어(DDL)의 스키마를 제공합니다. |
|
매개 변수 2 이름 |
|
|
매개 변수 2 설명 |
이미지 필드를 포함하는 테이블의 이름입니다. |
|
매개 변수 3 이름 |
|
|
매개 변수 3 설명 |
이미지가 저장되는 컨테이너 필드입니다. |
반환: 이미지를 Base64로 인코딩된 문자열로 포함하는 다음 형식의 JSON 데이터입니다.
[
{
"data": "/9j/4AAQ...//2Q=="
}
]
사용자 설정 함수
사용자 설정 함수를 호출하려면 도구 정의에 대한 다음 지침을 따르십시오.
-
함수의 경우:
-
이름
키에서 사용자 설정 함수 편집 대화 상자에 정의된 대로 사용자 설정 함수의 이름을 정확하게 사용합니다. -
설명
키에서 사용자 설정 함수가 수행하는 기능과 모델을 사용할 때 따라야 하는 규칙에 대한 자세한 설명을 제공합니다.
-
-
매개 변수의 경우:
-
사용자 설정 함수 편집 대화 상자에서 정의된 매개 변수와 동일한 순서로 정확히 같은 수의
매개 변수
를 정의합니다. 매개 변수 이름이 동일할 필요는 없습니다. -
설명
키에서 모델이 매개 변수에 제공해야 하는 사항에 대한 자세한 설명을 제공합니다. -
유형
키의 값을 "string"으로 설정합니다(매개 변수는 항상 텍스트로 처리됨).
-
참고
-
일반적인 오류 메시지에는 모델이 사용할 적절한 도구를 결정할 수 없는 경우 "프롬프트에 대한 도구 호출이 없습니다"와 도구 정의가 존재하지 않는 사용자 설정 함수를 참조하는 경우 "함수를 찾을 수 없음"이 포함됩니다.
예제 1
AI 계정을 구성하고 연락처 레이아웃으로 이동한 다음 사용자가 질문을 입력할 수 있는 대화 상자를 표시합니다. 그런 다음 모델에서 응답 생성 스크립트 단계는 프롬프트와 최근 메시지 기록을 모델로 보내고 결과를 응답 필드로 스트리밍합니다. 이와 같은 간단한 질문과 답변 상호 작용의 경우 에이전트 모드가 선택되지 않습니다. 현재 FileMaker 클라이언트 세션 동안 모델과 컨텍스트를 유지하기 위해 스크립트 단계는 메시지 기록 저장 대상 옵션을 통해 $$Messages 전역 변수에 최신 10개의 메시지를 저장합니다. 메시지 옵션을 통해 스크립트 단계는 이 스크립트가 동일한 세션에서 이후에 실행될 때 $$Messages 변수의 값을 모델에 보냅니다. 도구 정의 옵션이 사용되지 않기 때문에 모델은 데이터에 대한 질문에 답할 수 없습니다.
AI 계정 구성 [ 계정 이름: "my-account" ; 모델 제공자: OpenAI ; API 키: Global::API_Key ]
레이아웃으로 이동 [ "Contacts"(연락처) ]
사용자 설정 대화 상자 표시 [ "질문 입력" ; $UserPrompt ]
모델에서 응답 생성 [ 계정 이름: "my-account" ; 모델: Global::ModelName ; 사용자 프롬프트: $UserPrompt ; 응답: Contacts::Response ; 메시지: $$Messages ; 메시지 기록 저장 대상: $$Messages ; 메시지 기록 수: 10 ; 스트림 ]
예제 2
AI 계정을 구성하고 연락처 레이아웃으로 이동한 다음, 연락처 테이블의 데이터에 대해 묻는 프롬프트를 모델에 보내며, 도구를 사용하여 응답을 생성합니다. 최대 10개의 메시지가 $$Messages를 통해 메시지 전역 필드에 저장되기 때문에 FileMaker 클라이언트 세션에서 컨텍스트가 보존됩니다.
AI 계정 구성 [ 계정 이름: "my-account" ; 모델 제공자: OpenAI ; API 키: Global::API_Key ]
레이아웃으로 이동 [ "Contacts"(연락처) ]
변수 설정 [ $Instructions ; 값: "You are a helpful assistant that can query database information. Always provide clear, formatted responses." ]
변수 설정 [ $UserPrompt ; "How many contacts do we have from Acme Anvils, and what are their names and email addresses? Add an asterisk after the contacts who are in a city where we have a sales office." ]
모델에서 응답 생성 [ 계정 이름: "my-account" ; 모델: Global::ModelName ; 사용자 프롬프트: $UserPrompt ; 응답: Contacts::Response ; 모델에서 도구 호출: $$ToolCalls ; 지침: $Instructions ; 메시지: Global::Messages ; 메시지 기록 저장 대상: $$Messages ; 메시지 기록 수: 10 ; 도구 정의: Global::ToolDefinitions ; 스트림 ]
필드 설정 [ Global::Messages ; $$Messages ]
ToolDefinitions 필드에는 모델 공급자 OpenAI의 JSON 형식을 사용하는 다음이 포함되어 있습니다.
[
{
"function": {
"description": "Respond to the user’s questions by executing the appropriate SQL query using this function. Strictly follow these rules:\r 1. The input should be a fully formed SQL query.\r 2. Perform separate SQL instead of one nested SQL.\r 3. Escaping special characters for SQL query.\r 4. If the result of the toolCall is a raw string that reads 'empty' or 'null', the answer should contain the quoted raw string, which is case sensitive.\r 5. Convert the user’s request into an SQL query using standard SQL syntax only. Ensure that table names and field names match exactly as they appear in the database schema.",
"name": "execute_sql",
"parameters": {
"properties": {
"sql_query": {
"description": "Generate a fully formed SQL query based on following rules:\r 1. Enclose all table and field names in double quotes.\r 2. Format dates as \"DATE 'YYYY-MM-DD'\", times as \"TIME 'HH:MM:SS'\" and timestamps as \"TIMESTAMP 'YYYY-MM-DD HH:MM:SS'\".\r 3. Return queries in plain text (not JSON).\r 4. Use \"FETCH FIRST n ROW ONLY\" instead of \"LIMIT\".\r 5. Support single queries only.\r 6. No semicolon is needed at the end of SQL query.\r 7. Don't generate nested SQL queries.\r 8. Use \"LIKE\" instead of \"ILIKE\".\r 9. Keep all comparisons case-sensitive.\r 10. Do not include fields that are not included in the question.\r 11. Use unquoted ROWID in queries.\r 12. Only utilize the following database schema:\rCREATE TABLE \"Contacts\" (\r\"First Name\" varchar(255),\r\"Last Name\" varchar(255),\r\"Email\" varchar(255),\r\r\"City\" varchar(255),\r\"Company\" varchar(255)\r);\r\r",
"type": "string"
}
},
"type": "object",
"required": ["sql_query"]
}
},
"type": "function"
},
{
"function": {
"description": "Check whether our company has a sales office in a specified city. If it does, this function returns 'yes'; otherwise, it returns 'no'.",
"name": "CityHasSalesOffice",
"parameters": {
"properties": {
"city": {
"description": "The name of a city",
"type": "string"
}
},
"type": "object",
"required": ["city"]
}
},
"type": "function"
}
]
execute_sql의 경우, 위에 제공된 함수 설명과 매개 변수 설명을 사용합니다. sql_query 매개 변수에서 위에 제공된 설명과 연락처 테이블의 스키마를 사용합니다.
사용자 설정 함수 CityHasSalesOffice는 지정된 도시에 영업소가 있는지 여부에 따라 "yes" 또는 "no"를 반환합니다.
응답 필드로 스트리밍될 수 있는 응답:
Acme Anvils의 연락처가 4개 있습니다. 다음은 이름, 이메일 주소 및 판매 사무소가 있는 도시에 있는지 여부를 나타내는 별표입니다.
1. Alea Marks, aleamarks165@example.com
2. Kelly Holden, kellyholden1361@example.com *
3. Kelsey Cummings, kelseycummings1396@example.com
4. Kuame Savage, kuamesavage7146@example.com
$$ToolCalls 변수에는 execute_sql 및 CityHasSalesOffice에 대한 여러 호출이 포함되어 있습니다.
[
{
"index": 0,
"id": "call_e7...",
"type": "function",
"function": {
"name": "execute_sql",
"arguments": "{\"sql_query\":\"SELECT COUNT(*) FROM \\\"Contacts\\\" WHERE \\\"Company\\\" = 'Acme Anvils'\"}"
}
},
{
"index": 0,
"id": "call_o0...",
"type": "function",
"function": {
"name": "execute_sql",
"arguments": "{\"sql_query\":\"SELECT \\\"First Name\\\", \\\"Last Name\\\", \\\"Email\\\", \\\"City\\\" FROM \\\"Contacts\\\" WHERE \\\"Company\\\" = 'Acme Anvils'\"}"
}
},
{
"index": 0,
"id": "call_ev...",
"type": "function",
"function": {
"name": "CityHasSalesOffice",
"arguments": "{\"city\": \"Onitsha\"}"
}
},
{
"index": 1,
"id": "call_IC...",
"type": "function",
"function": {
"name": "CityHasSalesOffice",
"arguments": "{\"city\": \"Berlin\"}"
}
},
{
"index": 2,
"id": "call_Pw...",
"type": "function",
"function": {
"name": "CityHasSalesOffice",
"arguments": "{\"city\": \"Saint-Malo\"}"
}
},
{
"index": 3,
"id": "call_Uy...",
"type": "function",
"function": {
"name": "CityHasSalesOffice",
"arguments": "{\"city\": \"Wanneroo\"}"
}
}
]