Elasticsearch 开放推理 API 增加了对 Anthropic 的 Claude 的支持

2024-08-30 21:52

本文主要是介绍Elasticsearch 开放推理 API 增加了对 Anthropic 的 Claude 的支持,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:来自 Elastic Jonathan Buttner

我们很高兴地宣布 Elasticsearch Open Inference API 的最新功能:集成 Anthropic 的 Claude。这项功能使 Elastic 用户能够直接连接到 Anthropic 平台,并使用 Claude 3.5 Sonnet 等大型语言模型来构建 GenAI 应用程序,并实现问答等用例。以前,客户可以从 Amazon Bedrock 等提供商处访问此功能,但现在可以使用他们的 Anthropic 帐户来实现这些目的。

使用 Anthropic 的消息来回答问题

在此博客中,我们将使用 Claude Messages API 在提取(ingestion)过程中回答问题,以便在搜索之前准备好答案。在开始与 Elasticsearch 交互之前,请确保你拥有 Anthropic API 密钥,方法是先创建一个评估帐户并生成一个密钥。我们将使用 Kibana 的控制台在 Elasticsearch 中执行这些后续步骤,而无需设置 IDE。

首先,我们配置一个推理端点,它将与 Anthropic 的消息 API 交互:

PUT _inference/completion/anthropic_completion
{"service": "anthropic","service_settings": {"api_key": "<api key>","model_id": "claude-3-5-sonnet-20240620"},"task_settings": {"max_tokens": 1024}
}

成功创建推理端点后,我们将收到类似以下的响应,状态代码为 200 OK:

{"model_id": "anthropic_completion","task_type": "completion","service": "anthropic","service_settings": {"model_id": "claude-3-5-sonnet-20240620","rate_limit": {"requests_per_minute": 50}},"task_settings": {"max_tokens": 1024}
}

现在,我们可以调用已配置的端点来对任何文本输入执行 completion。让我们向模型询问 GenAI 的简短描述:

POST _inference/completion/anthropic_completion
{"input": "What is a short description of GenAI?"
}

我们应该收到状态代码为 200 OK 的响应,其中包含 GenAI 的简短描述:

{"completion": [{"result": "GenAI, short for Generative Artificial Intelligence, refers to AI systems that can create new content, such as text, images, audio, or video, based on patterns learned from existing data. These systems use advanced machine learning techniques, often involving deep neural networks, to generate human-like outputs in response to prompts or inputs. GenAI has diverse applications across industries, including content creation, design, coding, and problem-solving."}]
}

现在,我们可以设置一个问题目录,其中包含我们希望在采集期间得到解答的问题。我们将使用 Elasticsearch Bulk API 来索引有关 Elastic 产品的这些问题:

POST _bulk
{ "index" : { "_index" : "questions" } }
{"question": "What is Elasticsearch?"}
{ "index" : { "_index" : "questions" } }
{"question": "What is Kibana?"}
{ "index" : { "_index" : "questions" } }
{"question": "What is Logstash?"}

索引成功后应返回类似以下的响应:

{"errors": false,"took": 1552829728,"items": [{"index": {"_index": "questions","_id": "ipR_qJABkw3SJM5Tm3IC","_version": 1,"result": "created","_shards": {"total": 2,"successful": 1,"failed": 0},"_seq_no": 0,"_primary_term": 1,"status": 201}},{"index": {"_index": "questions","_id": "i5R_qJABkw3SJM5Tm3IC","_version": 1,"result": "created","_shards": {"total": 2,"successful": 1,"failed": 0},"_seq_no": 1,"_primary_term": 1,"status": 201}},{"index": {"_index": "questions","_id": "jJR_qJABkw3SJM5Tm3IC","_version": 1,"result": "created","_shards": {"total": 2,"successful": 1,"failed": 0},"_seq_no": 2,"_primary_term": 1,"status": 201}}]
}

我们现在将使用 script、inference 和 remove 处理器来创建我们的问答 ingest pipeline :

PUT _ingest/pipeline/question_answering_pipeline
{"processors": [{"script": {"source": "ctx.prompt = 'Please answer the following question: ' + ctx.question"}},{"inference": {"model_id": "anthropic_completion","input_output": {"input_field": "prompt","output_field": "answer"}}},{"remove": {"field": "prompt"}}]
}

管道在名为 prompt 的临时字段中为 question 字段添加前缀文本:“Please answer the following question:  ”。临时 prompt 字段的内容通过 inference API 发送到 Anthropic 服务。使用摄取管道提供了广泛的灵活性,因为你可以设置预提示以满足你的需求。这种方法也可用于汇总文档。

接下来,我们将通过调用 reindex API 将包含问题的文档通过问答管道发送。

POST _reindex
{"source": {"index": "questions","size": 50},"dest": {"index": "answers","pipeline": "question_answering_pipeline"}
}

我们应该收到类似以下的回应:

{"took": 9571,"timed_out": false,"total": 3,"updated": 0,"created": 3,"deleted": 0,"batches": 1,"version_conflicts": 0,"noops": 0,"retries": {"bulk": 0,"search": 0},"throttled_millis": 0,"requests_per_second": -1,"throttled_until_millis": 0,"failures": []
}

在生产设置中,你可能会使用另一种提取机制以自动方式提取文档。查看我们的 “将数据添加到 Elasticsearch” 指南,了解有关 Elastic 提供的将数据提取到 Elasticsearch 的各种选项的更多信息。我们还致力于展示提取机制并提供使用第三方工具将数据引入 Elasticsearch 的指导。例如,查看使用 Meltano 将数据从 Snowflake 提取到 Elasticsearch:开发人员的旅程,了解如何使用 Meltano 提取数据。

我们现在可以使用 Search API 搜索我们预先生成的答案:

POST answers/_search
{"query": {"match_all": {}}
}

响应将包含预先生成的答案:

{"took": 11,"timed_out": false,"_shards": { ... },"hits": {"total": { ... },"max_score": 1.0,"hits": [{"_index": "answers","_id": "4RO6YY8Bv2OsAP2iNusn","_score": 1.0,"_ignored": ["answer.keyword"],"_source": {"model_id": "azure_openai_completion","question": "What is Elasticsearch?","answer": "Elasticsearch is an open-source, RESTful, distributed search and analytics engine built on Apache Lucene. It can handle a wide variety of data types, including textual, numerical, geospatial, structured, and unstructured data. Elasticsearch is scalable and designed to operate in real-time, making it an ideal choice for use cases such as application search, log and event data analysis, and anomaly detection."}},{ ... },{ ... }]}
}

预先生成常见问题的答案对于降低运营成本特别有效。通过最大限度地减少对即时响应生成的需求,你可以显著减少所需的计算资源量。此外,这种方法可确保每个用户都收到相同的精确信息。一致性至关重要,尤其是在需要高可靠性和准确性的领域,例如医疗、法律或技术支持。

准备好自己尝试一下了吗?开始免费试用。
Elasticsearch 集成了 LangChain、Cohere 等工具。加入我们的高级语义搜索网络研讨会,构建你的下一个 GenAI 应用程序!

原文:Elasticsearch open inference API adds support for Anthropic’s Claude — Search Labs

这篇关于Elasticsearch 开放推理 API 增加了对 Anthropic 的 Claude 的支持的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122036

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3