Ollama API 사용 가이드

AI 실습 튜토리얼5개월 전에 게시 됨 AI 공유 서클
1.2K 00

개요

Ollama 개발자가 대규모 언어 모델과 쉽게 상호 작용할 수 있도록 강력한 REST API가 제공됩니다. 사용자는 올라마 API를 통해 자연어 처리, 텍스트 생성 등의 작업에 적용하여 모델에서 생성된 요청을 보내고 응답을 받을 수 있습니다. 본 백서에서는 보완 생성 및 대화 생성의 기본 동작에 대해 자세히 설명하고, 모델 생성, 모델 복사, 모델 삭제 등 일반적인 작업도 설명합니다.

 

시작점 또는 종료점(스토리 등)

답변 완료 \ 대화 완료 \ 모델 생성 \ 모델 복사 \ 모델 삭제 \ 실행 중인 모델 목록 \ 로컬 모델 목록 \ 모델 정보 표시 \ 모델 가져오기 \ 모델 밀어넣기 \ 임베딩 생성

 

I. 답변 완료

POST /api/generate

지정된 모델을 사용하여 지정된 프롬프트에 대한 응답을 생성합니다. 이 엔드포인트는 스트리밍 엔드포인트이므로 일련의 응답이 있을 것입니다. 최종 응답 개체에는 요청의 통계 및 기타 데이터가 포함됩니다.

매개변수

  • model: (필수) 모델명
  • prompt응답을 생성하는 팁
  • suffix모델 응답 후 텍스트
  • images(선택 사항) base64로 인코딩된 이미지 목록(다음과 같은 멀티모달 모델용). llava )

고급 매개변수(선택 사항):

  • format: 응답의 형식을 반환합니다. 현재 허용되는 유일한 값은 json
  • options:: 다음과 같은 기타 모델 매개변수 temperatureseed 외(및 기타 저자)
  • system시스템 메시지
  • template사용할 프롬프트 템플릿
  • context:: 이전 리뷰에서 /generate 요청에서 반환된 컨텍스트 매개 변수를 사용하여 짧은 대화 메모리를 유지할 수 있습니다.
  • stream로 설정한 경우 false 응답은 객체 스트림이 아닌 단일 응답 객체로 반환됩니다.
  • raw로 설정한 경우 true 를 사용하면 프롬프트의 서식이 지정되지 않습니다. API를 요청할 때 전체 템플릿 프롬프트를 지정하는 경우 선택적으로 raw 매개변수
  • keep_alive요청 후 모델이 메모리에 남아 있는 기간을 제어합니다(기본값):5m)

요청 예시(스트리밍)

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?"
}'

사용하는 경우 curl 명령을 다운로드하십시오. Windows용 컬환경 변수를 추가하려면 파일을 압축을 푼 다음 파일이 있는 디렉터리에서 bin 하위 파일을 찾아 파일 주소를 복사하여 환경 변수를 추가합니다.

명령줄 창에서 다음 명령어를 사용하여(PowerShell이 아닌) 성공적으로 추가되었는지 확인합니다.

curl --help

추가에 성공하면 다음과 같은 메시지가 표시됩니다.

Ollama API 使用指南

Windows 명령줄 창에서 curl 명령을 요청할 때는 이스케이프된 큰따옴표를 사용해야 합니다. 명령어의 예는 다음과 같습니다.

curl http://localhost:11434/api/generate -d "{\"model\": \"llama3.1\", \"prompt\": \"为什么草是绿的\"}"

다음 디스플레이는 요청이 성공했음을 나타냅니다.

Ollama API 使用指南

응답 예시

반환되는 것은 JSON 객체의 스트림입니다:

{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:08.184732629Z",
"response":"植物",
"done":false
}

스트림의 최종 응답에는 생성에 대한 추가 데이터도 포함됩니다:

  • 컨텍스트: 이 응답에 사용된 대화 코드로, 다음 요청에서 대화를 메모리에 유지하기 위해 보낼 수 있습니다.
  • total_duration: 응답 생성에 소요된 시간(나노초 단위)
  • load_duration: 모델을 로드하는 데 걸리는 시간(나노초)
  • prompt_eval_count: 프롬프트의 토큰 수
  • prompt_eval_duration: 프롬프트를 평가하는 데 걸리는 시간(나노초 단위)
  • eval_count: 응답에 포함된 토큰 수
  • eval_duration: 응답 생성에 소요되는 시간(나노초 단위)
  • 응답: 응답이 스트리밍 중이면 null, 그렇지 않으면 전체 응답을 포함합니다 응답 생성 속도(초당 생성되는 토큰 수, 토큰/s)를 계산하려면 다음과 같이 계산합니다.eval_count / eval_duration * 10^9.

최종 응답:

{
"model":"llama3.1",
"created_at":"2024-08-08T02:54:10.819603411Z",
"response":"",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":8655401792,
"load_duration":5924129727,
"prompt_eval_count":17,
"prompt_eval_duration":29196000,
"eval_count":118,
"eval_duration":2656329000
}

고급 플레이

비스트리밍 출력

최고 사령관(군) stream 로 설정 false를 클릭하면 모든 응답을 한 번에 받을 수 있습니다.

요청 예시

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false
}'

응답 예시

{
"model":"llama3.1",
"created_at":"2024-08-08T07:13:34.418567351Z",
"response":"答案:叶子含有大量的叶绿素。",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":2902435095,
"load_duration":2605831520,
"prompt_eval_count":17,
"prompt_eval_duration":29322000,
"eval_count":13,
"eval_duration":266499000
}

JSON 모드

(공동) 실패(학생) format 로 설정 json 출력은 JSON 형식입니다. 그러나 prompt 그렇지 않으면 모델에서 많은 수의 공백을 생성할 수 있으므로 모델에 JSON 형식으로 응답하도록 지시합니다.

요청 예시

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?以JSON格式输出答案",
"format": "json",
"stream": false
}'

응답 예시

{
"model":"llama3.1",
"created_at":"2024-08-08T07:21:24.950883454Z",
"response":"{\n  \"颜色原因\": \"叶子中含有光合作用所需的叶绿素\",\n  \"作用\": \"进行光合作用吸收太阳能\"\n}",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":3492279981,
"load_duration":2610591203,
"prompt_eval_count":22,
"prompt_eval_duration":28804000,
"eval_count":40,
"eval_duration":851206000
}

response 값은 다음과 유사한 JSON이 포함된 문자열입니다:

{
"颜色原因": "叶子中含有光合作用所需的叶绿素",
"作用": "进行光合作用吸收太阳能"
}

입력에 이미지 포함

멀티모달 모델에 새 모델을 추가하려면(예 llava 어쩌면 bakllava이미지를 제출하려면 base64로 인코딩된 버전의 images 목록:

요청 예시

curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt":"描述这张图片",
"stream": false,
"images": ["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"
]
}'

응답 예시

{
"model":"llava",
"created_at":"2024-08-08T07:33:55.481713465Z",
"response":" The image shows a cartoon of an animated character that resembles a cute pig with large eyes and a smiling face. It appears to be in motion, indicated by the lines extending from its arms and tail, giving it a dynamic feel as if it is waving or dancing. The style of the image is playful and simplistic, typical of line art or stickers. The character's design has been stylized with exaggerated features such as large ears and a smiling expression, which adds to its charm. ",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":2960501550,
"load_duration":4566012,
"prompt_eval_count":1,
"prompt_eval_duration":758437000,
"eval_count":108,
"eval_duration":2148818000
}

재현 가능한 출력

최고 사령관(군) seed 재현 가능한 출력을 얻으려면 고정 값으로 설정합니다:

요청 예시

curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "为什么草是绿的?",
"stream": false,
"options": {
"seed": 1001
}
}'

응답 예시

{
"model":"llama3.1",
"created_at":"2024-08-08T07:42:28.397780058Z",
"response":"答案:因为叶子中含有大量的氯离子。",
"done":true,
"done_reason":"stop",
"context":[1,2,3],
"total_duration":404791556,
"load_duration":18317351,
"prompt_eval_count":17,
"prompt_eval_duration":22453000,
"eval_count":16,
"eval_duration":321267000}

 

II. 대화 완료

POST /api/chat

지정된 모델을 사용하여 채팅에서 다음 메시지를 생성합니다. 이 역시 스트리밍 엔드포인트이므로 일련의 응답이 있을 것입니다. 만약 "stream" 로 설정 false를 클릭하면 스트리밍을 비활성화할 수 있습니다. 최종 응답 개체에는 요청된 통계와 추가 데이터가 포함됩니다.

매개변수

  • model: (필수) 모델명
  • messages채팅 메시지, 채팅 메모를 보관하는 데 사용할 수 있습니다.
  • tools이 모델은 도구 사용을 지원합니다. 이 모델은 stream 로 설정 false

message 객체에는 다음과 같은 필드가 있습니다:

  • role메시지의 역할은 다음과 같을 수 있습니다. systemuserassistant 어쩌면 tool
  • content메시지 내용
  • images(선택 사항): 메시지에 포함할 이미지 목록(예: 다음과 같은 메시지의 경우 llava (이와 같은 멀티모달 모델)
  • tool_calls(선택 사항): 모델이 사용하려는 도구 목록

고급 매개변수(선택 사항):

  • format: 응답의 형식을 반환합니다. 현재 허용되는 유일한 값은 json
  • options다음과 같은 기타 모델 매개변수 temperatureseed 외(및 기타 저자)
  • stream경우 false응답은 객체 스트림이 아닌 단일 응답 객체로 반환됩니다.
  • keep_alive요청 후 모델이 메모리에 로드된 상태를 유지하는 기간을 제어합니다(기본값):5m)

요청 예시(스트리밍)

curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿的?"
}
]
}'

응답 예시

JSON 객체 스트림을 반환합니다:

{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:36.933701041Z",
"message":{
"role":"assistant",
"content":"因为"
},
"done":false
}

최종 응답:

{
"model":"llama3.1",
"created_at":"2024-08-08T03:54:37.187621765Z",
"message":{
"role":"assistant",
"content":""
},
"done_reason":"stop",
"done":true,
"total_duration":5730533217,
"load_duration":5370535786,
"prompt_eval_count":17,
"prompt_eval_duration":29621000,
"eval_count":13,
"eval_duration":273810000
}

고급 플레이

비스트리밍 출력, JSON 모드, 멀티모달 입력, 재현 가능한 출력 및 回答API 일관성을 유지합니다.

기록과 함께

대화 내역이 포함된 채팅 메시지 보내기. 동일한 방법을 사용하여 여러 차례의 대화 또는 생각 연결 프롬프트를 시작할 수 있습니다.

요청 예시

curl http://localhost:11434/api/chat -d '{
"model": "llama3.1",
"messages": [
{
"role": "user",
"content": "为什么草是绿色的?"
},
{
"role": "assistant",
"content": "因为草里面含有叶绿素。"
},
{
"role": "user",
"content": "为什么叶绿素让草看起来是绿色的?"
}
],
"stream": false
}'

응답 예시

{
"model":"llama3.1",
"created_at":"2024-08-08T07:53:28.849517802Z",
"message":{
"role":"assistant",
"content":"这是一个更复杂的问题!\n\n叶绿素是一种称为黄素的色素,这些色素可以吸收光能。在日光下,绿色草叶中的叶绿素会吸收蓝光和红光,但反射出黄色和绿色的光,所以我们看到草看起来是绿色的。\n\n简单来说,叶绿素让草看起来是绿色的,因为它反射了我们的眼睛可以看到的绿光,而不反射我们看到的其他颜色。"
},
"done_reason":"stop",
"done":true,
"total_duration":5065572138,
"load_duration":2613559070,
"prompt_eval_count":48,
"prompt_eval_duration":37825000,
"eval_count":106,
"eval_duration":2266694000}

III. 모델 만들기

POST /api/create

일반 권장 사항 modelfile 를 모델파일의 내용으로 설정하는 것이 아니라 path원격 모델 생성. 또한 원격 모델 생성은 모든 파일 블롭, 필드( FROM 노래로 응답 ADAPTER)를 클릭하고 응답에 표시된 경로로 값을 설정합니다.

매개변수

  • name생성할 모델 이름
  • modelfile(선택 사항): 모델파일의 내용
  • stream(선택 사항): 경우 false응답은 객체 스트림이 아닌 단일 응답 객체로 반환됩니다.
  • path(선택 사항): 모델 파일의 경로입니다.

요청 예시

curl http://localhost:11434/api/create -d '{
"name": "mario",
"modelfile": "FROM llama3\nSYSTEM You are mario from Super Mario Bros."
}'

응답 예시

JSON 객체의 문자열입니다. 최종 JSON 객체에는 다음과 같은 내용이 표시됩니다. "status": "success"성공적으로 생성되었다는 메시지가 표시됩니다.

{"status":"reading model metadata"}
{"status":"creating system layer"}
{"status":"using already created layer sha256:22f7f8ef5f4c791c1b03d7eb414399294764d7cc82c7e94aa81a1feb80a983a2"}
{"status":"using already created layer sha256:8c17c2ebb0ea011be9981cc3922db8ca8fa61e828c5d3f44cb6ae342bf80460b"}
{"status":"using already created layer sha256:7c23fb36d80141c4ab8cdbb61ee4790102ebd2bf7aeff414453177d4f2110e5d"}
{"status":"using already created layer sha256:2e0493f67d0c8c9c68a8aeacdf6a38a2151cb3c4c1d42accf296e19810527988"}
{"status":"using already created layer sha256:2759286baa875dc22de5394b4a925701b1896a7e3f8e53275c36f75a877a82c9"}
{"status":"writing layer sha256:df30045fe90f0d750db82a058109cecd6d4de9c90a3d75b19c09e5f64580bb42"}
{"status":"writing layer sha256:f18a68eb09bf925bb1b669490407c1b1251c5db98dc4d3d81f3088498ea55690"}
{"status":"writing manifest"}
{"status":"success"}

블롭이 존재하는지 확인

HEAD /api/blobs/:digest

FROM 또는 ADAPTER 필드에 대한 파일 블롭이 서버에 존재하는지 확인합니다. 이것은 Ollama.ai가 아닌 Ollama 서버를 확인하는 것입니다.

문의 매개 변수

  • digest: 블롭의 SHA256 다이제스트

요청 예시

curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2

응답 예시

블롭이 존재하면 "200 OK"를 반환하고, 존재하지 않으면 "404 찾을 수 없음"을 반환합니다.

블롭 만들기

POST /api/blobs/:digest

서버의 파일에서 블롭을 생성합니다. 서버 파일 경로를 반환합니다.

문의 매개 변수

  • digest문서의 예상 SHA256 요약 정보

요청 예시

curl -T model.bin -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2

응답 예시

블롭이 성공적으로 생성된 경우 201 생성됨을 반환하고, 사용된 다이제스트가 예상과 다른 경우 400 잘못된 요청을 반환합니다.

 

IV. 복제 모델

POST /api/copy

기존 모델을 복제하려면 다른 이름을 사용하여 모델을 복제합니다.

요청 예시

curl http://localhost:11434/api/copy -d '{
"source": "llama3.1",
"destination": "llama3-backup"
}'

응답 예시

성공하면 '200 OK'를 반환하고, 소스 모델이 존재하지 않으면 '404 찾을 수 없음'을 반환합니다.

 

V. 모델 삭제

DELETE /api/delete

모델과 해당 데이터를 삭제합니다.

매개변수

  • name삭제할 모델 이름

요청 예시

[](https://github.com/datawhalechina/handy-ollama/blob/main/docs/C4/1.%20Ollama%20API%20%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.md#%E7%A4%BA%E4%BE%8B%E8%AF%B7%E6%B1%82-4)

curl -X DELETE http://localhost:11434/api/delete -d '{
"name": "llama3.1"
}'

응답 예시

성공하면 "200 OK"를 반환하고, 삭제할 모델이 존재하지 않으면 "404 찾을 수 없음"을 반환합니다.

 

VI. 운영 모델 목록

GET /api/ps

현재 메모리에 로드된 모델을 나열합니다.

요청 예시

curl http://localhost:11434/api/ps

응답 예시

{
"models":[
{
"name":"llama3.1:latest",
"model":"llama3.1:latest",
"size":6654289920,
"digest":"75382d0899dfaaa6ce331cf680b72bd6812c7f05e5158c5f2f43c6383e21d734",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
},
"expires_at":"2024-08-08T14:06:52.883023476+08:00",
"size_vram":6654289920
}
]
}

 

VII. 현지 모델 목록

GET /api/tags

현지에서 사용 가능한 모델을 나열합니다.

요청 예시

curl http://localhost:11434/api/tags

응답 예시

{
"models":[
{
"name":"llama3.1:latest",
"model":"llama3.1:latest",
"modified_at":"2024-08-07T17:54:22.533937636+08:00",
"size":4661230977,
"digest":"75382d0899dfaaa6ce331cf680b72bd6812c7f05e5158c5f2f43c6383e21d734",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
}
}
]
}

 

VIII. 모델 정보 표시

POST /api/show

세부 정보, 모델 파일, 템플릿, 파라미터, 라이선스, 시스템 힌트 등 모델에 대한 정보를 표시합니다.

매개변수

  • name표시할 모델 이름
  • verbose(선택 사항): 다음과 같이 설정한 경우 true를 클릭한 다음 상세 응답 필드에 대한 전체 데이터를 반환합니다.

요청 예시

curl http://localhost:11434/api/show -d '{
"name": "llama3.1"
}'

응답 예시

{
"license":"...",
"modelfile":"...",
"parameters":"...",
"template":"...",
"details":{
"parent_model":"",
"format":"gguf",
"family":"llama",
"families":["llama"],
"parameter_size":"8.0B",
"quantization_level":"Q4_0"
},
"model_info":{
"general.architecture":"llama",
"general.basename":"Meta-Llama-3.1",
"general.file_type":2,
"general.finetune":"Instruct",
"general.languages":["en","de","fr","it","pt","hi","es","th"],
"general.license":"llama3.1",
"general.parameter_count":8030261312,
"general.quantization_version":2,
"general.size_label":"8B",
"general.tags":["facebook","meta","pytorch","llama","llama-3","text-generation"],
"general.type":"model",
"llama.attention.head_count":32,
"llama.attention.head_count_kv":8,
"llama.attention.layer_norm_rms_epsilon":0.00001,
"llama.block_count":32,
"llama.context_length":131072,
"llama.embedding_length":4096,
"llama.feed_forward_length":14336,
"llama.rope.dimension_count":128,
"llama.rope.freq_base":500000,
"llama.vocab_size":128256,
"tokenizer.ggml.bos_token_id":128000,
"tokenizer.ggml.eos_token_id":128009,
"tokenizer.ggml.merges":null,
"tokenizer.ggml.model":"gpt2",
"tokenizer.ggml.pre":"llama-bpe",
"tokenizer.ggml.token_type":null,
"tokenizer.ggml.tokens":null
},
"modified_at":"2024-08-07T17:54:22.533937636+08:00"
}

 

IX. 풀링 모델

POST /api/pull

통해 (틈새) ollama 라이브러리 다운로드 모델. 풀 작업이 중단되면 중단점에서 다운로드가 계속되고 여러 호출이 동일한 다운로드 진행 상황을 공유하게 됩니다.

매개변수

  • name가져올 모델 이름
  • insecure(선택 사항): 라이브러리에 대한 안전하지 않은 연결을 허용합니다. 개발 중에 자체 라이브러리에서 가져올 때만 이 옵션을 사용하는 것이 좋습니다.
  • stream(선택 사항): 경우 false응답은 객체 스트림이 아닌 단일 응답 객체로 반환됩니다.

요청 예시

curl http://localhost:11434/api/pull -d '{
"name": "llama3.1"
}'

응답 예시

다음과 같은 경우 stream 지정되지 않았거나 true를 입력하면 JSON 객체 문자열이 반환됩니다:

첫 번째 개체는 목록입니다:

{
"status": "pulling manifest"
}

그런 다음 일련의 다운로드 응답이 있습니다. 다운로드가 완료될 때까지 다음과 같은 내용이 포함되지 않을 수 있습니다. completed 키를 누릅니다. 다운로드할 파일 수는 목록에 지정된 레이어 수에 따라 달라집니다.

{
"status": "downloading digestname",
"digest": "digestname",
"total": 2142590208,
"completed": 241970
}

모든 파일이 다운로드된 후 최종 응답은 다음과 같습니다:

{
"status": "verifying sha256 digest"
}
{
"status": "writing manifest"
}
{
"status": "removing any unused layers"
}
{
"status": "success"
}

다음과 같은 경우 stream 가 false로 설정되어 있으면 응답은 단일 JSON 객체입니다:

{
"status": "success"
}

 

X. 푸시 모델

POST /api/push

모델 저장소에 모델을 업로드합니다. 먼저 ollama.ai를 등록하고 공개 키를 추가해야 합니다.

매개변수

  • name푸시할 모델의 이름, 형식은 다음과 같습니다. <namespace>/<model>:<tag>
  • insecure(선택 사항): 라이브러리에 대한 안전하지 않은 연결을 허용합니다. 개발 중에 자체 라이브러리로 푸시할 때만 이 옵션을 사용하세요.
  • stream(선택 사항): 경우 false응답은 객체 스트림이 아닌 단일 응답 객체로 반환됩니다.

요청 예시

curl http://localhost:11434/api/push -d '{
"name": "mattw/pygmalion:latest"
}'

응답 예시

다음과 같은 경우 stream 지정되지 않았거나 true를 입력하면 JSON 객체 문자열이 반환됩니다:

{ "status": "retrieving manifest" }

그런 다음 일련의 업로드 응답이 이어집니다:

{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}

마지막으로 업로드가 완료되면

{"status":"pushing manifest"}
{"status":"success"}

다음과 같은 경우 stream 로 설정 false응답이 단일 JSON 객체인 경우 응답은 단일 JSON 객체입니다:

{ "status": "success" }

 

XI. 임베드 생성

POST /api/embed

모델에서 임베딩 생성하기.

매개변수

  • model임베딩을 생성할 모델의 이름입니다.
  • input임베디드 텍스트 또는 텍스트 목록 생성하기

고급 매개변수:

  • truncate: 컨텍스트 길이에 맞게 각 입력의 끝을 잘라냅니다. 다음과 같은 경우에는 문제가 되지 않습니다. false 를 반환하고 컨텍스트 길이를 초과하면 오류가 반환됩니다. 기본값은 true
  • options다음과 같은 기타 모델 매개변수 temperatureseed 외(및 기타 저자)
  • keep_alive요청 후 모델이 메모리에 로드된 상태를 유지하는 기간을 제어합니다(기본값):5m)

요청 예시

curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": "为什么草是绿的?"
}'

응답 예시

{
"model":"llama3.1",
"embeddings":[[
-0.008059342,-0.013182715,0.019781841,0.012018124,-0.024847334,
-0.0031902494,-0.02714767,0.015282277,0.060032737,...
]],
"total_duration":3041671009,
"load_duration":2864335471,
"prompt_eval_count":7}

요청 예시(여러 입력)

curl http://localhost:11434/api/embed -d '{
"model": "llama3.1",
"input": ["为什么草是绿的?","为什么天是蓝的?"]
}'

응답 예시

{
"model":"llama3.1",
"embeddings":[[
-0.008471201,-0.013031566,0.019300476,0.011618419,-0.025197424,
-0.0024164673,-0.02669075,0.015766116,0.059984162,...
],[
-0.012765694,-0.012822924,0.015915949,0.006415892,-0.02327763,
0.004859615,-0.017922137,0.019488193,0.05638235,...
]],
"total_duration":195481419,
"load_duration":1318886,
"prompt_eval_count":14
}

 

오류 처리

Ollama API는 오류가 발생하면 적절한 오류 코드와 메시지를 반환합니다. 일반적인 오류는 다음과 같습니다:

  • 400 잘못된 요청: 요청 형식 오류입니다.
  • 404 찾을 수 없음: 요청된 리소스가 존재하지 않습니다.
  • 500 내부 서버 오류: 내부 서버 오류입니다.
© 저작권 정책
AiPPT

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...