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

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

Restful API 原理以及实现

先说说API 再说啥是RESRFUL API之前,咱先说说啥是API吧。API大家应该都知道吧,简称接口嘛。随着现在移动互联网的火爆,手机软件,也就是APP几乎快爆棚了。几乎任何一个网站或者应用都会出一款iOS或者Android APP,相比网页版的体验,APP确实各方面性能要好很多。 那么现在问题来了。比如QQ空间网站,如果我想获取一个用户发的说说列表。 QQ空间网站里面需要这个功能。

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬