XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Add files via upload

Fix empty H2o output

c60d5efd
AlephZero255 <83110161+AlephZero255@users.noreply.github.com>
提交于

代码差异

1 个文件 +93 -105
Modified g4f/Provider/Providers/H2o.py +93 -105
@@ -1,106 +1,94 @@
1 from requests import Session
2 from uuid import uuid4
3 from json import loads
4 import os
5 import json
6 import requests
7 from ...typing import sha256, Dict, get_type_hints
8
9 url = 'https://gpt-gm.h2o.ai'
10 model = ['falcon-40b', 'falcon-7b', 'llama-13b']
11 supports_stream = True
12 needs_auth = False
13
14 models = {
15 'falcon-7b': 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-7b-v3',
16 'falcon-40b': 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-40b-v1',
17 'llama-13b': 'h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-13b'
18 }
19
20 def _create_completion(model: str, messages: list, stream: bool, **kwargs):
21 conversation = 'instruction: this is a conversation beween, a user and an AI assistant, respond to the latest message, referring to the conversation if needed\n'
22 for message in messages:
23 conversation += '%s: %s\n' % (message['role'], message['content'])
24 conversation += 'assistant:'
25
26 client = Session()
27 client.headers = {
28 'authority': 'gpt-gm.h2o.ai',
29 'origin': 'https://gpt-gm.h2o.ai',
30 'referer': 'https://gpt-gm.h2o.ai/',
31 'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
32 'sec-ch-ua-mobile': '?0',
33 'sec-ch-ua-platform': '"Windows"',
34 'sec-fetch-dest': 'document',
35 'sec-fetch-mode': 'navigate',
36 'sec-fetch-site': 'same-origin',
37 'sec-fetch-user': '?1',
38 'upgrade-insecure-requests': '1',
39 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
40 }
41
42 client.get('https://gpt-gm.h2o.ai/')
43 response = client.post('https://gpt-gm.h2o.ai/settings', data={
44 'ethicsModalAccepted': 'true',
45 'shareConversationsWithModelAuthors': 'true',
46 'ethicsModalAcceptedAt': '',
47 'activeModel': 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-40b-v1',
48 'searchEnabled': 'true',
49 })
50
51 headers = {
52 'authority': 'gpt-gm.h2o.ai',
53 'accept': '*/*',
54 'accept-language': 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
55 'origin': 'https://gpt-gm.h2o.ai',
56 'referer': 'https://gpt-gm.h2o.ai/',
57 'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
58 'sec-ch-ua-mobile': '?0',
59 'sec-ch-ua-platform': '"Windows"',
60 'sec-fetch-dest': 'empty',
61 'sec-fetch-mode': 'cors',
62 'sec-fetch-site': 'same-origin',
63 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
64 }
65
66 json_data = {
67 'model': models[model]
68 }
69
70 response = client.post('https://gpt-gm.h2o.ai/conversation',
71 headers=headers, json=json_data)
72 conversationId = response.json()['conversationId']
73
74
75 completion = client.post(f'https://gpt-gm.h2o.ai/conversation/{conversationId}', stream=True, json = {
76 'inputs': conversation,
77 'parameters': {
78 'temperature': kwargs.get('temperature', 0.4),
79 'truncate': kwargs.get('truncate', 2048),
80 'max_new_tokens': kwargs.get('max_new_tokens', 1024),
81 'do_sample': kwargs.get('do_sample', True),
82 'repetition_penalty': kwargs.get('repetition_penalty', 1.2),
83 'return_full_text': kwargs.get('return_full_text', False)
84 },
85 'stream': True,
86 'options': {
87 'id': kwargs.get('id', str(uuid4())),
88 'response_id': kwargs.get('response_id', str(uuid4())),
89 'is_retry': False,
90 'use_cache': False,
91 'web_search_id': ''
92 }
93 })
94
95 for line in completion.iter_lines():
96 if b'data' in line:
97 line = loads(line.decode('utf-8').replace('data:', ''))
98 token = line['token']['text']
99
100 if token == '<|endoftext|>':
101 break
102 else:
103 yield (token)
104
105 params = f'g4f.Providers.{os.path.basename(__file__)[:-3]} supports: ' + \
1 from requests import Session
2 from uuid import uuid4
3 from json import loads
4 import os
5 import json
6 import requests
7 from ...typing import sha256, Dict, get_type_hints
8
9 url = 'https://gpt-gm.h2o.ai'
10 model = ['falcon-40b', 'falcon-7b', 'llama-13b']
11 supports_stream = True
12 needs_auth = False
13
14 models = {
15 'falcon-7b': 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-7b-v3',
16 'falcon-40b': 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-40b-v1',
17 'llama-13b': 'h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-13b'
18 }
19
20 def _create_completion(model: str, messages: list, stream: bool, **kwargs):
21 conversation = ''
22 for message in messages:
23 conversation += '%s: %s\n' % (message['role'], message['content'])
24
25 conversation += 'assistant: '
26 session = requests.Session()
27
28 response = session.get("https://gpt-gm.h2o.ai/")
29 headers = {
30 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
31 "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
32 "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
33 "Content-Type": "application/x-www-form-urlencoded",
34 "Upgrade-Insecure-Requests": "1",
35 "Sec-Fetch-Dest": "document",
36 "Sec-Fetch-Mode": "navigate",
37 "Sec-Fetch-Site": "same-origin",
38 "Sec-Fetch-User": "?1",
39 "Referer": "https://gpt-gm.h2o.ai/r/jGfKSwU"
40 }
41 data = {
42 "ethicsModalAccepted": "true",
43 "shareConversationsWithModelAuthors": "true",
44 "ethicsModalAcceptedAt": "",
45 "activeModel": "h2oai/h2ogpt-gm-oasst1-en-2048-falcon-40b-v1",
46 "searchEnabled": "true"
47 }
48 response = session.post("https://gpt-gm.h2o.ai/settings", headers=headers, data=data)
49
50
51
52 headers = {
53 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
54 "Accept": "*/*",
55 "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
56 "Content-Type": "application/json",
57 "Sec-Fetch-Dest": "empty",
58 "Sec-Fetch-Mode": "cors",
59 "Sec-Fetch-Site": "same-origin",
60 "Referer": "https://gpt-gm.h2o.ai/"
61 }
62 data = {
63 "model": models[model]
64 }
65
66 conversation_id = session.post("https://gpt-gm.h2o.ai/conversation", headers=headers, json=data)
67 data = {
68 "inputs": conversation,
69 "parameters": {
70 "temperature": kwargs.get('temperature', 0.4),
71 "truncate": kwargs.get('truncate', 2048),
72 "max_new_tokens": kwargs.get('max_new_tokens', 1024),
73 "do_sample": kwargs.get('do_sample', True),
74 "repetition_penalty": kwargs.get('repetition_penalty', 1.2),
75 "return_full_text": kwargs.get('return_full_text', False)
76 },
77 "stream": True,
78 "options": {
79 "id": kwargs.get('id', str(uuid4())),
80 "response_id": kwargs.get('response_id', str(uuid4())),
81 "is_retry": False,
82 "use_cache": False,
83 "web_search_id": ""
84 }
85 }
86
87 response = session.post(f"https://gpt-gm.h2o.ai/conversation/{conversation_id.json()['conversationId']}", headers=headers, json=data)
88 generated_text = response.text.replace("\n", "").split("data:")
89 generated_text = json.loads(generated_text[-1])
90
91 return generated_text["generated_text"]
92
93 params = f'g4f.Providers.{os.path.basename(__file__)[:-3]} supports: ' + \
106 94 '(%s)' % ', '.join([f"{name}: {get_type_hints(_create_completion)[name].__name__}" for name in _create_completion.__code__.co_varnames[:_create_completion.__code__.co_argcount]])