
如何快速實(shí)現(xiàn)REST API集成以優(yōu)化業(yè)務(wù)流程
3.圖像轉(zhuǎn)文本:圖像字幕、OCR(光學(xué)字符識(shí)別) 圖像到文本結(jié)合使用卷積神經(jīng)網(wǎng)絡(luò) (CNN) 進(jìn)行特征提取,并結(jié)合循環(huán)神經(jīng)網(wǎng)絡(luò) (RNN) 或 Transformer 生成相應(yīng)的文本。OCR 技術(shù)專門采用二值化等圖像預(yù)處理技術(shù),并采用 k-NN 或 SVM 等機(jī)器學(xué)習(xí)分類器。對(duì)于企業(yè)來說,領(lǐng)域LLM可以轉(zhuǎn)化為搜索引擎優(yōu)化視覺內(nèi)容的自動(dòng)標(biāo)記、發(fā)票的自動(dòng)分類等等。
通過了解這些各種領(lǐng)域LLM功能的技術(shù)基礎(chǔ)和業(yè)務(wù)應(yīng)用,企業(yè)可以就如何將領(lǐng)域LLM整合到其運(yùn)營(yíng)中以產(chǎn)生最大影響做出更明智的決策。
1.0 ChatIE:通過多輪問答問題實(shí)現(xiàn)實(shí)命名實(shí)體識(shí)別和關(guān)系事件的零樣本信息抽取
零樣本信息抽取(Information Extraction,IE)旨在從無標(biāo)注文本中建立IE系統(tǒng),因?yàn)楹苌偕婕叭藶楦深A(yù),該問題非常具有挑戰(zhàn)性。但零樣本IE不再需要標(biāo)注數(shù)據(jù)時(shí)耗費(fèi)的時(shí)間和人力,因此十分重要。近來的大規(guī)模語(yǔ)言模型(例如GPT-3,Chat GPT)在零樣本設(shè)置下取得了很好的表現(xiàn),這啟發(fā)我們探索基于提示的方法來解決零樣本IE任務(wù)。我們提出一個(gè)問題:不經(jīng)過訓(xùn)練來實(shí)現(xiàn)零樣本信息抽取是否可行?我們將零樣本IE任務(wù)轉(zhuǎn)變?yōu)橐粋€(gè)兩階段框架的多輪問答問題(Chat IE),并在三個(gè)IE任務(wù)中廣泛評(píng)估了該框架:實(shí)體關(guān)系三元組抽取、命名實(shí)體識(shí)別和事件抽取。在兩個(gè)語(yǔ)言的6個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,Chat IE取得了非常好的效果,甚至在幾個(gè)數(shù)據(jù)集上(例如NYT11-HRL)上超過了全監(jiān)督模型的表現(xiàn)。我們的工作能夠?yàn)橛邢拶Y源下IE系統(tǒng)的建立奠定基礎(chǔ)。
LangChain的目的是為了開發(fā)應(yīng)用,通過模塊組合的方式使用LLM,并與其他模塊組合的方式來創(chuàng)造應(yīng)用。可以理解為L(zhǎng)angchain本身并不提供LLM模型,只是對(duì)LLM抽象,把LLM當(dāng)作一個(gè)功能模塊使用。LangChain能夠連接LLM的能力與目前已有的其他能力,創(chuàng)造能力更強(qiáng)大的應(yīng)用。
實(shí)現(xiàn)原理如圖所示,過程包括加載文件 -> 讀取文本 -> 文本分割 -> 文本向量化 -> 問句向量化 -> 在文本向量中匹配出與問句向量最相似的top k個(gè) -> 匹配出的文本作為上下文和問題一起添加到prompt中 -> 提交給LLM生成回答。 可以看到,核心是將本地答案數(shù)據(jù)集轉(zhuǎn)為向量存儲(chǔ)到向量數(shù)據(jù),當(dāng)用戶輸入查詢的問題時(shí),把問題轉(zhuǎn)為向量然后從向量數(shù)據(jù)庫(kù)中查詢相近的答案topK 這個(gè)時(shí)候其實(shí)就是我們最普遍的問答查詢方案,在沒有大模型的時(shí)候就直接返回相關(guān)的答案整個(gè)流程就結(jié)束了。現(xiàn)在有大模型了可以優(yōu)化回答內(nèi)容的整體結(jié)構(gòu)。 核心一:文本切割 核心二:embedding及向量化存儲(chǔ) 核心點(diǎn)三:LLM總結(jié) 通過embedding向量化文本后可根據(jù)需要召回TopK的chunk文檔,并按照類似如下的prompt template灌給大模型進(jìn)行總結(jié)。
"""
已知信息:{context}
根據(jù)上述已知信息,簡(jiǎn)潔和專業(yè)的來回答用戶的問題。如果無法從中得到答案,請(qǐng)說 “根據(jù)已知信息無法回答該問題” 或 “沒有提供足夠的相關(guān)信息”,不允許在答案中添加編造成分,答案請(qǐng)使用中文。
問題是:{question}
"""
AIGC(Artificial Intelligence Generated Content,人工智能生成內(nèi)容)是一種利用人工智能技術(shù)生成各種形式內(nèi)容的方法。這些內(nèi)容包括文本、圖像、音頻、視頻等。
AIGC技術(shù)的應(yīng)用范圍非常廣泛,包括但不限于以下幾個(gè)方面:
文本生成:使用自然語(yǔ)言處理技術(shù),根據(jù)給定的輸入,自動(dòng)生成符合語(yǔ)法和語(yǔ)義規(guī)則的文章、故事、廣告語(yǔ)等。 圖像生成:利用計(jì)算機(jī)視覺技術(shù),根據(jù)給定的輸入,自動(dòng)生成符合要求的圖片、海報(bào)、漫畫等。 音頻生成:使用語(yǔ)音合成技術(shù),根據(jù)給定的文字或語(yǔ)音輸入,自動(dòng)生成符合要求的音頻文件,如語(yǔ)音助手、語(yǔ)音導(dǎo)航等。 視頻生成:利用計(jì)算機(jī)視覺和語(yǔ)音識(shí)別技術(shù),根據(jù)給定的輸入,自動(dòng)生成符合要求的視頻文件,如智能監(jiān)控、智能安防等。 AIGC技術(shù)的應(yīng)用不僅可以提高內(nèi)容生成的效率和質(zhì)量,還可以降低內(nèi)容制作的成本和風(fēng)險(xiǎn)。例如,在媒體和廣告行業(yè),AIGC技術(shù)可以快速生成符合品牌調(diào)性和用戶需求的文章、圖片和視頻,提高品牌曝光和用戶粘性。在游戲行業(yè),AIGC技術(shù)可以自動(dòng)生成游戲場(chǎng)景、角色和道具等,提高游戲開發(fā)效率和質(zhì)量。
LLM 進(jìn)行圖像識(shí)別與傳統(tǒng) OCR 對(duì)比時(shí)的主要缺點(diǎn)
LLM 的缺點(diǎn)
與傳統(tǒng) OCR 的對(duì)比
今天我們來看的場(chǎng)景是 圖型驗(yàn)證碼識(shí)別,使用公網(wǎng)大模型API起成本高效識(shí)別圖型驗(yàn)證碼
提示詞
請(qǐng)對(duì)這張圖片進(jìn)行OCR識(shí)別,并輸出最準(zhǔn)確的驗(yàn)證碼,直接輸出識(shí)別出的結(jié)果字符,不要輸出其他內(nèi)容。
文心一言3.5
通義千問2.5
通義千問2-VL-開源版-7B
圖片理解qwen2-vl-7b
關(guān)于7B模型
一般來說,7B參數(shù)量的模型在推理時(shí)可能需要至少8GB到16GB的GPU顯存,但這只是一個(gè)粗略的估計(jì)。為了更準(zhǔn)確地評(píng)估所需GPU顯存,建議參考該模型官方提供的文檔或測(cè)試環(huán)境中的具體要求。如果是在本地運(yùn)行,還應(yīng)該考慮是否進(jìn)行了任何優(yōu)化措施,比如混合精度訓(xùn)練(使用FP16而非FP32),這可以有效減少所需的顯存量。如果您打算進(jìn)行模型訓(xùn)練而不是簡(jiǎn)單的推理,那么可能還需要更多的顯存來存儲(chǔ)梯度信息和其他訓(xùn)練過程中產(chǎn)生的數(shù)據(jù)。
KIMI
Gemini 1.5 Flash
做 OCR 效果非常好,可以在 Prompt 里面定制要輸出的格式,并且成本極低。 案例有寶玉反饋其朋友某公司使用第三方的OCR的服務(wù),用來提取發(fā)票上的文字為結(jié)構(gòu)化數(shù)據(jù)。但收費(fèi)較高.
參考提示詞: *** Extract text from the provided image and organize it into a structured JSON format. ***
Google 每天為開發(fā)者免費(fèi)提供15億個(gè)Token,其中 Gemini 1.5 Flash免費(fèi)套餐包含: – 每分鐘15次請(qǐng)求(RPM) – 每分鐘100萬個(gè)Token(TPM) – 每天1,500次Token(RPD) – 免費(fèi)上下文緩存服務(wù),每小時(shí)最多可存儲(chǔ)100萬個(gè)Token – 免費(fèi)微調(diào) Gemini 1.5 Pro免費(fèi)套餐包含: – 每分鐘2次請(qǐng)求(RPM) – 每分鐘32,000個(gè)Token(TPM) – 每天50次請(qǐng)求(RPD) 微調(diào)模型 text-embedding-004 提供: – 每分鐘1,500次請(qǐng)求(RPM) 除了前面說的 API,Google AI Studio 還為開發(fā)者提供免費(fèi)訪問,其中 Gemini 1.5 Pro 有 2M Token上下文窗口。 價(jià)格頁(yè)面:https://ai.google.dev/pricing Google AI Studio:https://aistudio.google.com
發(fā)票識(shí)別示例場(chǎng)景
代碼實(shí)現(xiàn)
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):
# 根據(jù)環(huán)境變量決定從哪里讀取 API Key
dev_environment_variable = os.getenv("ENVIRONMENT")
is_development = not dev_environment_variable or dev_environment_variable.lower() == "development"
if is_development:
# 開發(fā)環(huán)境從配置中讀取
api_key = self.configuration.get("DASHSCOPE_API_KEY")
else:
# 生產(chǎn)環(huán)境從環(huán)境變量讀取
api_key = os.getenv("DASHSCOPE_API_KEY")
# 若沒有配置環(huán)境變量,請(qǐng)用百煉API Key將下行替換為:api_key = "sk-xxx"
if not api_key:
print("API Key 未設(shè)置。請(qǐng)確保環(huán)境變量 'DASHSCOPE_API_KEY' 已設(shè)置。")
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"請(qǐng)求失敗: {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": "請(qǐng)對(duì)這張圖片進(jìn)行OCR識(shí)別,并輸出最準(zhǔn)確的驗(yàn)證碼,直接輸出識(shí)別出的結(jié)果字符,不要輸出其他內(nèi)容。"},
{"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可以根據(jù)您傳入的圖片來進(jìn)行回答,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": "這是什么?"} ] } ] } }'
事實(shí)情況下獨(dú)立部署也可以
測(cè)試圖片進(jìn)行識(shí)別
返回示例
[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"}
目前僅供免費(fèi)體驗(yàn),另一個(gè)官方示例是視覺語(yǔ)言模型輸出示例
傳統(tǒng)OCR工具提取的內(nèi)容不完整且格式混亂。大模型不僅能精準(zhǔn)提取圖片中的文字,還能以規(guī)整的形式輸出。
通義千問團(tuán)隊(duì)以Apache 2.0協(xié)議開源了Qwen2-VL-2B和Qwen2-VL-7B,開源代碼已集成到Hugging Face Transformers、vLLM和其他第三方框架中。開發(fā)者可以通過Hugging Face和魔搭ModelScope下載使用模型,也可通過通義官網(wǎng)、通義APP的主對(duì)話頁(yè)面使用模型。
圖片理解
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
阿里云百煉平臺(tái):
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
模型體驗(yàn):
https://huggingface.co/spaces/Qwen/Qwen2-VL
https://qwen.readthedocs.io/en/latest/benchmark/speed_benchmark.html
文章轉(zhuǎn)自微信公眾號(hào)@機(jī)器學(xué)習(xí)AI算法工程
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)