【Model】【llm38】Llama API - 示例

【Model】【llm38】Llama API - 示例

案例目标

Llama API是一个托管的Llama 2 API服务,支持函数调用功能。本案例展示了如何通过LlamaIndex集成Llama API,实现基本的文本补全、对话交互、函数调用和结构化数据提取功能。Llama API为开发者提供了一个便捷的方式来使用Llama 2模型,无需本地部署,可以直接通过API调用模型服务,大大简化了使用流程。同时,该API支持函数调用功能,使得模型能够与外部工具和服务进行交互,扩展了应用场景。

环境配置

1. 安装依赖

安装必要的依赖包:

%pip install llama-index-program-openai %pip install llama-index-llms-llama-api !pip install llama-index

2. 获取API密钥

要运行此示例,您需要从Llama API官网获取API密钥。

3. 导入库并设置API密钥

导入必要的库并设置API密钥:

from llama_index.llms.llama_api import LlamaAPI api_key = "LL-your-key" llm = LlamaAPI(api_key=api_key)

案例实现

1. 基本用法 - 文本补全

使用complete方法进行文本补全:

resp = llm.complete("Paul Graham is ") print(resp)

输出示例:

Paul Graham is a well-known computer scientist and entrepreneur, best known for his work as a co-founder of Viaweb and later Y Combinator, a successful startup accelerator. He is also a prominent essayist and has written extensively on topics such as entrepreneurship, software development, and the tech industry.

2. 基本用法 - 对话交互

使用chat方法进行对话交互:

from llama_index.core.llms import ChatMessage messages = [ ChatMessage( role="system", content="You are a pirate with a colorful personality" ), ChatMessage(role="user", content="What is your name"), ] resp = llm.chat(messages) print(resp)

输出示例:

assistant: Arrrr, me hearty! Me name be Captain Blackbeak, the scurviest dog on the seven seas! Yer lookin' fer a swashbucklin' adventure, eh? Well, hoist the sails and set course fer the high seas, matey! I be here to help ye find yer treasure and battle any scurvy dogs who dare cross our path! So, what be yer first question, landlubber?

3. 函数调用

使用函数调用功能,定义一个Song模型:

from pydantic import BaseModel from llama_index.core.llms.openai_utils import to_openai_function class Song(BaseModel): """A song with name and artist""" name: str artist: str song_fn = to_openai_function(Song)
使用函数调用生成歌曲信息
llm = LlamaAPI(api_key=api_key) response = llm.complete("Generate a song", functions=[song_fn]) function_call = response.additional_kwargs["function_call"] print(function_call)

输出示例:

{'name': 'Song', 'arguments': {'name': 'Happy', 'artist': 'Pharrell Williams'}}

4. 结构化数据提取

定义Album和Song模型,用于结构化数据提取:

from pydantic import BaseModel from typing import List class Song(BaseModel): """Data model for a song.""" title: str length_mins: int class Album(BaseModel): """Data model for an album.""" name: str artist: str songs: List[Song]
创建Pydantic程序
from llama_index.program.openai import OpenAIPydanticProgram"\ Extract album and songs from the text provided. For each song, make sure to specify the title and the length_mins. {text} """ llm = LlamaAPI(api_key=api_key, temperature=0.0) program = OpenAIPydanticProgram.from_defaults( output_cls=Album, llm=llm, prompt_template_str=prompt_template_str, verbose=True, )
运行程序提取结构化数据
output = program(" "Echoes of Eternity" is a compelling and thought-provoking album, skillfully crafted by the renowned artist, Seraphina Rivers. \ This captivating musical collection takes listeners on an introspective journey, delving into the depths of the human experience \ and the vastness of the universe. With her mesmerizing vocals and poignant songwriting, Seraphina Rivers infuses each track with \ raw emotion and a sense of cosmic wonder. The album features several standout songs, including the hauntingly beautiful "Stardust \ Serenade," a celestial ballad that lasts for six minutes, carrying listeners through a celestial dreamscape. "Eclipse of the Soul" \ captivates with its enchanting melodies and spans over eight minutes, inviting introspection and contemplation. Another gem, "Infinity \ Embrace," unfolds like a cosmic odyssey, lasting nearly ten minutes, drawing listeners deeper into its ethereal atmosphere. "Echoes of Eternity" \ is a masterful testament to Seraphina Rivers' artistic prowess, leaving an enduring impact on all who embark on this musical voyage through \ time and space. """ )

输出示例:

Function call: Album with args: {'name': 'Echoes of Eternity', 'artist': 'Seraphina Rivers', 'songs': [{'title': 'Stardust Serenade', 'length_mins': 6}, {'title': 'Eclipse of the Soul', 'length_mins': 8}, {'title': 'Infinity Embrace', 'length_mins': 10}]}
查看结构化输出
output

输出示例:

Album(name='Echoes of Eternity', artist='Seraphina Rivers', songs=[Song(title='Stardust Serenade', length_mins=6), Song(title='Eclipse of the Soul', length_mins=8), Song(title='Infinity Embrace', length_mins=10)])

案例效果

本案例展示了Llama API的多种功能和应用场景:

  • 基本文本补全:能够完成简单的文本补全任务,如介绍Paul Graham
  • 对话交互:支持多轮对话,能够根据系统提示和用户消息生成符合角色的回应
  • 函数调用:支持函数调用功能,能够根据输入生成结构化的函数调用参数
  • 结构化数据提取:能够从非结构化文本中提取结构化信息,如从专辑描述中提取专辑名、艺术家和歌曲列表
  • OpenAI兼容性:与OpenAI API兼容,可以使用OpenAI的工具和库进行集成

案例实现思路

本案例的实现基于以下思路:

  1. API集成:通过LlamaIndex的LlamaAPI类封装Llama API服务,提供统一的接口
  2. 基本交互:实现complete和chat两种基本交互方式,满足不同场景需求
  3. 函数调用:利用OpenAI兼容的函数调用功能,实现模型与外部工具的交互
  4. 结构化数据提取:通过Pydantic模型定义数据结构,使用OpenAIPydanticProgram提取结构化信息
  5. 模型定义:使用Pydantic定义数据模型,确保输出的结构化和类型安全
  6. 提示工程:设计合适的提示模板,引导模型生成符合要求的输出

扩展建议

  • 更多函数调用:定义更多复杂的函数,实现更丰富的交互功能
  • 多模态支持:如果API支持,可以扩展到多模态数据处理
  • 错误处理:添加完善的错误处理机制,提高应用稳定性
  • 缓存机制:实现响应缓存,减少重复请求,提高效率
  • 流式响应:如果API支持,实现流式响应功能
  • 性能监控:监控API调用的响应时间和资源消耗
  • 成本控制:监控API调用成本,优化使用策略
  • 自定义工具:开发自定义工具,扩展模型的能力边界

总结

Llama API为开发者提供了一个便捷的方式来使用Llama 2模型,无需本地部署,可以直接通过API调用模型服务。通过LlamaIndex的集成,开发者可以使用简单的API调用实现文本补全、对话交互、函数调用和结构化数据提取等功能。特别是函数调用和结构化数据提取功能,使得模型能够与外部工具和服务进行交互,大大扩展了应用场景。Llama API的OpenAI兼容性也使得开发者可以复用现有的OpenAI工具和库,降低了学习成本。总体而言,Llama API是一个值得考虑的Llama 2模型服务方案,特别适合那些希望快速部署Llama 2应用的开发者。

Read more

【Spring 全家桶】Spring MVC 快速入门,开始web 更好上手(下篇) , 万字解析, 建议收藏 ! ! !

【Spring 全家桶】Spring MVC 快速入门,开始web 更好上手(下篇) , 万字解析, 建议收藏 ! ! !

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!! 引言 Spring MVC 犹如一座桥梁,连接着前端的精彩与后端的强大,它赋予开发者以灵动之笔,在数字化的画布上描绘出绚丽多彩的 Web 世界。在 Spring MVC 的引领下,我们能够驾驭复杂的业务逻辑,实现流畅的用户体验,让技术与创意完美融合,开启无限可能的 Web 开发之旅。 目录 1. 返回响应内容 2. lombok 3. 加法器 一. 返回响应内容 在上篇中,我们学习了如何使用控制层的处理请求相关, 现在我们学习如何处理返回响应内容。 1. 设置状态码 importjakarta.servlet.http.HttpServletResponse;importorg.springframework.stereotype.Controller;importorg.

WebGIS 开发工程师成长指南

WebGIS 开发工程师成长指南

WebGIS 开发工程师成长指南 成为企业真正需要的 WebGIS 开发工程师 📅 更新时间:2026 年 3 月 📌 一、什么是 WebGIS 开发工程师? WebGIS 是Web 开发技术与**地理信息系统(GIS)**的结合产物,通过浏览器实现地理信息的交互操作和服务。 核心工作内容 * 开发基于 Web 的地图应用系统 * 实现地图展示、缩放、平移、查询等基础功能 * 进行空间数据分析和可视化 * 集成遥感数据、矢量数据、三维模型等 * 开发 GIS 业务功能模块(如路径规划、空间分析、热力图等) * 编写技术文档和维护开发资料 🎯 二、企业核心技能要求 1️⃣ 前端开发基础(必会) 技能要求重要程度HTML/CSS/JavaScript扎实基础,ES6+ 语法⭐

CopilotKit for LangGraph 深度解析:构建 Agent 原生应用的前端交互框架

引言 随着大语言模型(LLM)技术的快速发展,AI Agent 应用正在从简单的聊天机器人演进为具备复杂推理、规划和工具调用能力的智能系统。LangGraph 作为 LangChain 生态中构建有状态、多步骤 Agent 工作流的核心框架,已被广泛应用于生产环境。然而,如何将这些后端 Agent 与前端用户界面进行高效、实时的交互,一直是开发者面临的技术挑战。 CopilotKit 正是为解决这一问题而生的开源框架。它通过 AG-UI(Agent-User Interaction Protocol)协议,为 LangGraph Agent 提供了标准化的前端集成方案,使开发者能够构建真正的 Agent 原生应用(Agent-Native Applications)。 本文将深入分析 CopilotKit 与 LangGraph 集成的核心机制,重点对比 useAgent 与 useCoAgent、useRenderToolCall 与