对大模型的调用通常有以下几种方式:方式一、大模型厂商都会定义http风格的请求接口,在代码中可以直接发起http请求调用;方式二、在开发环境中使用大模型厂商提供的api;方式三、使用开发框架Langchain调用,这个就像java对数据库的调用一样,可以直接用jdbc也可以使用第三方框架,第三方框架调用会封装一些共性问题,比如参数配置,多数据库统一调用方式,连接处理,缓存处理等等,使用第三方框架调用往往会大幅提高开发效率。下面逐一说明几种调用方式
方式一: post请求调用,以openai(chatgpt)为例,demo如下,举例代码语言为python,http调用各种语言都有这个能力,个人建议还是python来做大模型相关开发,pandas对数据集合处理已经比较成熟,内存运算性能也很高,下面的例子中requests为python的requests的模块
response = requests.post(
"https://api.openai.com/v1/chat/completions",
headers=headers,
json=json_data,
)
其中head封装了在openai上注册的key
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer " + openai.api_key,
}
json是一个python的字典,封装了模型名称和messages(prompt请求)
json_data = {"model": model, "messages": messages}
方式二:python使用使用大模型厂商提供的api(openai为例),首先要在开发环境中pip安装tiktoken和openai模块,openai有两个接口,1个是对话模型,1个语言模型,调用方式分别如下
pip install tiktoken openai
#调用Completion api,openai会以json返回回答
data = openai.Completion.create(
model="text-davinci-003",
prompt="牛肉面故乡在哪里",
max_tokens=1000,
temperature=0
)
#调用 chat Completion api,chat Completion api是GPT3.5开始使用的问答模型,可以使用这个模型实现一问一答
messages=[
{
"role": "user",
"content": "你好"
}
]
data = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages = messages
)
方式三:用使用langchain调用,使用langchain自带的OpenAI类,
from langchain.llms import OpenAI
 
llm = OpenAI(model_name="text-davinci-003")
llm("牛肉面起源于哪个城市")
Langchain有model,Data Connection,chains,Memory,Agents,Callbacks,每个模块的使用会在下一篇说明,OpenAI类属于model模块,如下图所示,Model 模块的主要职责1个是提示词的生成,1个是解决对大模型的调用的封装,这个有点像java里面Springboot template对jdbc的封装,封装后统一了对各类模型的调用
 

 
 
 

开发篇1:使用原生api和Langchain调用大模型的更多相关文章

  1. Zookeeper系列三:Zookeeper客户端的使用(Zookeeper原生API如何进行调用、ZKClient、Curator)和Zookeeper会话

    一.Zookeeper原生API如何进行调用 准备工作: 首先在新建一个maven项目ZK-Demo,然后在pom.xml里面引入zk的依赖 <dependency> <groupI ...

  2. vue 开发系列(五) 调用原生API

    概要 我们在开发手机端程序的时候了,我们经常需要使用到拍照,二维码的功能.数字天堂公司提供了大量的原生API支持. http://www.html5plus.org/doc/ 实现 1.在hbuild ...

  3. Android NDK开发篇(六):Java与原生代码通信(异常处理)

    一.捕获异常 异常处理是Java中的功能.在Android中使用SDK进行开发的时候常常要用到.Android原生代码在运行过程中假设遇到错误,须要检測,并抛出异常给Java层.运行原生代码出现了问题 ...

  4. Android NDK开发篇:Java与原生代码通信(异常处理)

    一.捕获异常 异常处理是Java中的功能,在Android中使用SDK进行开发的时候经常要用到.Android原生代码在执行过程中如果遇到错误,需要检测,并抛出异常给Java层.执行原生代码出现了问题 ...

  5. Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)

    文章目录:                   1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Ap ...

  6. 一个缓存使用案例:Spring Cache VS Caffeine 原生 API

    最近在学习本地缓存发现,在 Spring 技术栈的开发中,既可以使用 Spring Cache 的注解形式操作缓存,也可用各种缓存方案的原生 API.那么是否 Spring 官方提供的就是最合适的方案 ...

  7. 客户端软件GUI开发技术漫谈:原生与跨平台解决方案分析

    原生开发应用开发 Microsoft阵营的 Winform WinForm是·Net开发平台中对Windows Form的一种称谓. 如果你想深入的美化UI,需要耗费很大的力气,对于目前主流的CSS样 ...

  8. 剖析虚幻渲染体系(13)- RHI补充篇:现代图形API之奥义与指南

    目录 13.1 本篇概述 13.1.1 本篇内容 13.1.2 概念总览 13.1.3 现代图形API特点 13.2 设备上下文 13.2.1 启动流程 13.2.2 Device 13.2.3 Sw ...

  9. jQuery? 回归JavaScript原生API

    如今技术日新月异,各类框架库也是层次不穷.即便当年漫山红遍的JQuery(让开发者write less, do more,So Perfect!!)如今也有被替代的大势.但JS原生API写法依旧:并且 ...

  10. PHP数据库操作:从MySQL原生API到PDO

    本文将举详细例子向大家展示PHP是如何使用MySQL原生API.MySQLi面向过程.MySQLi面向对象.PDO操作MySQL数据库的. 为了后面的测试,先建立数据库表test.包含表名user,s ...

随机推荐

  1. 用策略模式干掉代码里大量的if-eles或则Swatch,提升B格由面向过程转为面向对象

    现象 大量的分支选择型代码段看着让人头疼 for (Field field : declaredFields) { Class<?> type = field.getType(); Str ...

  2. sql分组后排序计算

    用法:RANK() OVER(PARTITION BY 分组字段 ORDER BY 排序字段 ) 例子:要得到n4列 ---创建测试数据create table tb(n1 varchar2(40) ...

  3. dicker 常用命令(简洁版)

  4. Net 高级调试之七:线程操作相关命令介绍

    一.简介 今天是<Net 高级调试>的第六篇文章.上一篇文章我们说了值类型,引用类型,数组等的内存表现形式.有了这个基础,我们可以更好的了解我们的程序在运行时的状态,内存里有什么东西,它们 ...

  5. How to write a proposal?

    Most students and beginning researchers do not fully understand what a research proposal means, nor ...

  6. Leetcode旋转图像

    上C语言代码,矩阵先转置再左右对称就是旋转图像的答案啦 void rotate(int** matrix, int matrixSize, int* matrixColSize){ int i,j,n ...

  7. .NET周刊【11月第3期 2023-11-19】

    国内文章 .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试 https://www.cnblogs.com/FreeSql/p/17836 ...

  8. Tainted canvases may not be exported,视频帧截图跨域

    做原生相机拍照的时候遇见的有趣问题,视频流是上传到云服务器的在线链接,赋值到video的src上,然后使用canvas的drawImg方法去截取视频帧做照片,结果canvas报错视频跨域. 解决方案: ...

  9. Apache POI 操作Excel简单入门使用

    Apache POI简介 开发中经常会涉及到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel ...

  10. 【笔记整理】使用Session会话保持

    import requests if __name__ == '__main__': # Session对象实现了客户端和服务器端的每次会话保持功能. session = requests.Sessi ...