
云原生 API 网关 APISIX 入门教程
LLM(Large Language Model)技术是一种基于深度学习的自然语言处理技术,旨在训练能够处理和生成自然语言文本的大型模型。
3.图像转文本:图像字幕、OCR(光学字符识别) 图像到文本结合使用卷积神经网络 (CNN) 进行特征提取,并结合循环神经网络 (RNN) 或 Transformer 生成相应的文本。OCR 技术专门采用二值化等图像预处理技术,并采用 k-NN 或 SVM 等机器学习分类器。对于企业来说,领域LLM可以转化为搜索引擎优化视觉内容的自动标记、发票的自动分类等等。
通过了解这些各种领域LLM功能的技术基础和业务应用,企业可以就如何将领域LLM整合到其运营中以产生最大影响做出更明智的决策。
1.0 ChatIE:通过多轮问答问题实现实命名实体识别和关系事件的零样本信息抽取
零样本信息抽取(Information Extraction,IE)旨在从无标注文本中建立IE系统,因为很少涉及人为干预,该问题非常具有挑战性。但零样本IE不再需要标注数据时耗费的时间和人力,因此十分重要。近来的大规模语言模型(例如GPT-3,Chat GPT)在零样本设置下取得了很好的表现,这启发我们探索基于提示的方法来解决零样本IE任务。我们提出一个问题:不经过训练来实现零样本信息抽取是否可行?我们将零样本IE任务转变为一个两阶段框架的多轮问答问题(Chat IE),并在三个IE任务中广泛评估了该框架:实体关系三元组抽取、命名实体识别和事件抽取。在两个语言的6个数据集上的实验结果表明,Chat IE取得了非常好的效果,甚至在几个数据集上(例如NYT11-HRL)上超过了全监督模型的表现。我们的工作能够为有限资源下IE系统的建立奠定基础。
LangChain的目的是为了开发应用,通过模块组合的方式使用LLM,并与其他模块组合的方式来创造应用。可以理解为Langchain本身并不提供LLM模型,只是对LLM抽象,把LLM当作一个功能模块使用。LangChain能够连接LLM的能力与目前已有的其他能力,创造能力更强大的应用。
实现原理如图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的top k个 -> 匹配出的文本作为上下文和问题一起添加到prompt中 -> 提交给LLM生成回答。 可以看到,核心是将本地答案数据集转为向量存储到向量数据,当用户输入查询的问题时,把问题转为向量然后从向量数据库中查询相近的答案topK 这个时候其实就是我们最普遍的问答查询方案,在没有大模型的时候就直接返回相关的答案整个流程就结束了。现在有大模型了可以优化回答内容的整体结构。 核心一:文本切割 核心二:embedding及向量化存储 核心点三:LLM总结 通过embedding向量化文本后可根据需要召回TopK的chunk文档,并按照类似如下的prompt template灌给大模型进行总结。
"""
已知信息:{context}
根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。
问题是:{question}
"""
AIGC(Artificial Intelligence Generated Content,人工智能生成内容)是一种利用人工智能技术生成各种形式内容的方法。这些内容包括文本、图像、音频、视频等。
AIGC技术的应用范围非常广泛,包括但不限于以下几个方面:
文本生成:使用自然语言处理技术,根据给定的输入,自动生成符合语法和语义规则的文章、故事、广告语等。 图像生成:利用计算机视觉技术,根据给定的输入,自动生成符合要求的图片、海报、漫画等。 音频生成:使用语音合成技术,根据给定的文字或语音输入,自动生成符合要求的音频文件,如语音助手、语音导航等。 视频生成:利用计算机视觉和语音识别技术,根据给定的输入,自动生成符合要求的视频文件,如智能监控、智能安防等。 AIGC技术的应用不仅可以提高内容生成的效率和质量,还可以降低内容制作的成本和风险。例如,在媒体和广告行业,AIGC技术可以快速生成符合品牌调性和用户需求的文章、图片和视频,提高品牌曝光和用户粘性。在游戏行业,AIGC技术可以自动生成游戏场景、角色和道具等,提高游戏开发效率和质量。
LLM 进行图像识别与传统 OCR 对比时的主要缺点
LLM 的缺点
与传统 OCR 的对比
今天我们来看的场景是 图型验证码识别,使用公网大模型API起成本高效识别图型验证码
提示词
请对这张图片进行OCR识别,并输出最准确的验证码,直接输出识别出的结果字符,不要输出其他内容。
文心一言3.5
通义千问2.5
通义千问2-VL-开源版-7B
图片理解qwen2-vl-7b
关于7B模型
一般来说,7B参数量的模型在推理时可能需要至少8GB到16GB的GPU显存,但这只是一个粗略的估计。为了更准确地评估所需GPU显存,建议参考该模型官方提供的文档或测试环境中的具体要求。如果是在本地运行,还应该考虑是否进行了任何优化措施,比如混合精度训练(使用FP16而非FP32),这可以有效减少所需的显存量。如果您打算进行模型训练而不是简单的推理,那么可能还需要更多的显存来存储梯度信息和其他训练过程中产生的数据。
KIMI
Gemini 1.5 Flash
做 OCR 效果非常好,可以在 Prompt 里面定制要输出的格式,并且成本极低。 案例有宝玉反馈其朋友某公司使用第三方的OCR的服务,用来提取发票上的文字为结构化数据。但收费较高.
参考提示词: *** Extract text from the provided image and organize it into a structured JSON format. ***
Google 每天为开发者免费提供15亿个Token,其中 Gemini 1.5 Flash免费套餐包含: – 每分钟15次请求(RPM) – 每分钟100万个Token(TPM) – 每天1,500次Token(RPD) – 免费上下文缓存服务,每小时最多可存储100万个Token – 免费微调 Gemini 1.5 Pro免费套餐包含: – 每分钟2次请求(RPM) – 每分钟32,000个Token(TPM) – 每天50次请求(RPD) 微调模型 text-embedding-004 提供: – 每分钟1,500次请求(RPM) 除了前面说的 API,Google AI Studio 还为开发者提供免费访问,其中 Gemini 1.5 Pro 有 2M Token上下文窗口。 价格页面:https://ai.google.dev/pricing Google AI Studio:https://aistudio.google.com
发票识别示例场景
代码实现
import os
import json
import base64
import requests
from datetime import datetime
class AliBailianImageService:
def __init__(self, configuration):
self.configuration = configuration
def get_api_key(self):
# 根据环境变量决定从哪里读取 API Key
dev_environment_variable = os.getenv("ENVIRONMENT")
is_development = not dev_environment_variable or dev_environment_variable.lower() == "development"
if is_development:
# 开发环境从配置中读取
api_key = self.configuration.get("DASHSCOPE_API_KEY")
else:
# 生产环境从环境变量读取
api_key = os.getenv("DASHSCOPE_API_KEY")
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx"
if not api_key:
print("API Key 未设置。请确保环境变量 'DASHSCOPE_API_KEY' 已设置。")
return None
return api_key
def get_image_base64_string_and_save(self, image_url):
response = requests.get(image_url)
if response.status_code != 200:
raise Exception(f"Failed to download image: {response.status_code}")
image_data = response.content
encoded_image = base64.b64encode(image_data).decode('utf-8')
# 可选步骤:保存图片到文件
# filename = f"{uuid.uuid4()}.jpg"
# with open(filename, 'wb') as f:
# f.write(image_data)
return encoded_image
def send_post_request(self, url, json_content, api_key):
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
"Accept": "application/json"
}
response = requests.post(url, data=json_content, headers=headers)
response_body = response.text
self.write_response_to_log(response_body)
if response.status_code >= 200 and response.status_code < 300:
return response_body
else:
return f"请求失败: {response.status_code}"
def write_response_to_log(self, response_body):
log_file_path = "Logs/response.log"
log_dir = os.path.dirname(log_file_path)
if not os.path.exists(log_dir):
os.makedirs(log_dir)
with open(log_file_path, 'a') as f:
f.write(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] Response Body: {response_body}\n")
def get_results(self):
api_key = self.get_api_key()
if not api_key:
return None
encoded_image = self.get_image_base64_string_and_save(
"http://0.0.0.0/7661454/captchaimage?rnd=0.8717223995099175"
)
url = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"
json_content = {
"model": "qwen2-vl-7b-instruct",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "请对这张图片进行OCR识别,并输出最准确的验证码,直接输出识别出的结果字符,不要输出其他内容。"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{encoded_image}"}}
]
}
]
}
json_content_str = json.dumps(json_content)
result = self.send_post_request(url, json_content_str, api_key)
print(result)
return result
if __name__ == "__main__":
# 示例配置
config = {
"DASHSCOPE_API_KEY": "your-api-key-here"
}
service = AliBailianImageService(config)
result = service.get_results()
if result:
print("Result:", result)
通义千问2-VL-开源版-2B
通义千问VL模型qwen2-vl-2b-instruct可以根据您传入的图片来进行回答,curl参考
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \ -H "Authorization: Bearer $DASHSCOPE_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "model": "qwen-vl-max", "input":{ "messages":[ { "role": "user", "content": [ {"image": "https://img.alicdn.com/imgextra/i2/O1CN01y1lotD1hINrPr60fs_!!6000000004254-0-tps-1384-3024.jpg"}, {"text": "这是什么?"} ] } ] } }'
事实情况下独立部署也可以
测试图片进行识别
返回示例
[2024-11-06 16:14:22] Response Body: {"choices":[{"message":{"content":"\"bafy\"","role":"assistant"},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion","usage":{"prompt_tokens":60,"completion_tokens":6,"total_tokens":66},"created":1730880859,"system_fingerprint":null,"model":"qwen-vl-plus","id":"chatcmpl-5a306496-300c-9815-8c50-35e98f15508d"}
目前仅供免费体验,另一个官方示例是视觉语言模型输出示例
传统OCR工具提取的内容不完整且格式混乱。大模型不仅能精准提取图片中的文字,还能以规整的形式输出。
通义千问团队以Apache 2.0协议开源了Qwen2-VL-2B和Qwen2-VL-7B,开源代码已集成到Hugging Face Transformers、vLLM和其他第三方框架中。开发者可以通过Hugging Face和魔搭ModelScope下载使用模型,也可通过通义官网、通义APP的主对话页面使用模型。
图片理解
https://bailian.console.aliyun.com/#/model-market/detail/qwen2-vl-2b-instruct?tabKey=sdk
视觉理解
https://help.aliyun.com/zh/model-studio/user-guide/vision?spm=a2c4g.11186623.help-menu-2400256.d_1_0_2.5ef477e9sJEdx7&scm=20140722.H_2845871._.OR_help-V_1#f1cbd5b8a8k5w
阿里云百炼平台:
https://help.aliyun.com/zh/model-studio/developer-reference/qwen-vl-api
GitHub:
https://github.com/QwenLM/Qwen2-VL
HuggingFace:
https://huggingface.co/collections/Qwen/qwen2-vl-66cee7455501d7126940800d
魔搭ModelScope:
https://modelscope.cn/organization/qwen?tab=model
模型体验:
https://huggingface.co/spaces/Qwen/Qwen2-VL
https://qwen.readthedocs.io/en/latest/benchmark/speed_benchmark.html
文章转自微信公众号@机器学习AI算法工程