Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
DETAILED ACTION
This office action is in response to communication filed 4/2/2024. Claims 1-20 are currently pending and claims 1, 10, and 16 are the independent claims.
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claims 1-20 are rejected under 35 U.S.C. 101 because the claimed invention is directed to an abstract idea without significantly more.
As per claim 1, it recites “A system comprising: at least one processor; and a non-transitory computer readable medium storing instructions that, when executed by the at least one processor, cause the system to: determine a selection of a code snippet from a code associated with a first code type and where the selected code snippet is displayed on a first user interface of a device; based on the selection of the code snippet, generate a prompt comprising a context associated with the code, wherein the context is related to a functionality of the code; using a large language model, generate a transformed code snippet of a second code type using the code and the context and based on the large language model understanding of the context of the code; and causing a second user interface of a device to present the transformed code snippet corresponding to the code snippet.” The limitations “determine a selection of a code snippet from a code associated with a first code type”, “based on the selection of the code snippet, generate a prompt comprising a context associated with the code, wherein the context is related to a functionality of the code”, and “generate a transformed code snippet of a second code type using the code and the context”, as drafted, recites a function that, under its broadest reasonable interpretation, covers a function that could reasonably be performed in the mind, including with the aid of pen and paper, but for the recitation of generic computer components, and therefore, as drafted, is a function that, under its broadest reasonable interpretation, recite the abstract idea of a mental process. The limitation encompasses a human mind carrying out the function through observation, evaluation, judgment, and/or opinion, or even with the aid of pen and paper. For example, a human may mentally determine/decide/judge/select/etc. a code snippet, may manually/mentally/with pen and paper/etc. compose/write/generate/decide/etc. a prompt/statement/etc. that includes context/functionality of code, and may mentally/manually/with pen and paper/etc. translate/transform/etc. the code snippet into a new type/language/format/decide a new code snippet format/etc. based on/using the code and the context. As such, with broadest reasonable interpretation, these limitations recite and fall within the “Mental Processes” grouping of abstract ideas.
This judicial exception is not integrated into a practical application. The claim recites the additional elements “a system comprising: at least one processor; and a non-transitory computer readable medium storing instructions that, when executed by the at least one processor, cause the system to”, “where the selected code snippet is displayed on a first user interface of a device”, “using a large language model”, “based on the large language model understanding of the context of the code”, and “causing a second user interface of a device to present the transformed code snippet corresponding to the code snippet.” The additional elements “a system comprising: at least one processor; and a non-transitory computer readable medium storing instructions that, when executed by the at least one processor, cause the system to”, ““using a large language model”, and “based on the large language model understanding of the context of the code”, recite that high level/generic computer components and software/machine learning/at least one processor, non-transitory computer readable medium, large language model/etc. are used to implement/perform the abstract idea/mental process, and as such, with broadest reasonable interpretation, amounts to no more than mere instructions to apply the exception using generic computer and/or mere computer components. The additional elements “where the selected code snippet is displayed on a first user interface of a device” and “causing a second user interface of a device to present the transformed code snippet corresponding to the code snippet” do nothing more than add insignificant extra solution activities to the judicial exception of merely displaying data, and the courts have identified functions such as gathering, displaying, updating, transmitting and storing data as well-understood, routine, conventional activity, see MPEP 2106.05(d). Accordingly, the additional elements do not integrate the recited judicial exception into a practical application and the claim is therefore directed to the judicial exception. See MPEP 2106.05(f), 2106.05(g), etc..
The claim does not include additional elements that are sufficient to amount to significantly more than the judicial exception. As discussed above with respect to integration of the abstract idea into a practical application, the additional elements amount to no more than mere instructions to implement/perform/carry out the exception/abstract idea using generic computer/computer components/software/etc. and mere insignificant extra solution activities to the judicial exception of merely displaying data, and the courts have identified functions such as gathering, displaying, updating, transmitting and storing data as well-understood, routine, conventional activity, thus do not amount to significantly more than the judicial exception (see MPEP 2106.05(d)). Accordingly, the claim is not patent eligible under 35 USC 101.
As per claim 2, it incorporates the deficiencies of claim 1, upon which it depends, and further recites “...determine a second code snippet from the code; generate a second prompt comprising the context associated with the code and the second code snippet; generate, using the large language model, a second transformed code snippet based on the large language model understanding of the context of the code; combine the transformed code snippet and the second transformed code snippet; and cause the second user interface of the device to present the combined transformed code snippet and the second transformed code snippet” which, conceptually, with broadest reasonable interpretation, provides further clarification as to the abstract idea/mental process and further clarification as to the insignificant extra solution activity of displaying of data/information, and the courts have identified functions such as gathering, displaying, updating, transmitting and storing data as well-understood, routine, conventional activity, see MPEP 2106.05(d). As such, claim 2 does not integrate the abstract idea/mental process into a practical application and is not significantly more than the abstract idea/mental process, and therefore claim 2 fails to correct the deficiencies of claim 1, and is rejected for similar reasoning as claim 1, above.
As per claim 3, it incorporates the deficiencies of claim 1, upon which it depends, and further recites “...generate a plurality of candidate transformed code snippets using the large language model; and cause the second user interface of the device to present the plurality of candidate transformed code snippets” which, conceptually, with broadest reasonable interpretation, provides further clarification as to the abstract idea/mental process and further clarification as to the insignificant extra solution activity of displaying of data/information, and the courts have identified functions such as gathering, displaying, updating, transmitting and storing data as well-understood, routine, conventional activity, see MPEP 2106.05(d). As such, claim 3 does not integrate the abstract idea/mental process into a practical application and is not significantly more than the abstract idea/mental process, and therefore claim 3 fails to correct the deficiencies of claim 1, and is rejected for similar reasoning as claim 1, above.
As per claim 4, it incorporates the deficiencies of claim 1, upon which it depends, and further recites “...provide the transformed code snippet to a code repository” which, conceptually, with broadest reasonable interpretation, further recites the insignificant extra solution activity of transmitting and storing data/transformed code/providing code to a repository/storage/etc., and the courts have identified functions such as gathering, displaying, updating, transmitting, and storing data as well-understood, routine, conventional activity, see MPEP 2106.05(d). As such, claim 4 does not integrate the abstract idea/mental process into a practical application and is not significantly more than the abstract idea/mental process, and therefore claim 4 fails to correct the deficiencies of claim 1, and is rejected for similar reasoning as claim 1, above.
As per claim 5, it incorporates the deficiencies of claim 1, upon which it depends, and further recites “...accessing an embeddings database comprising prompt templates and code samples; comparing the code snippet with the code samples in the embeddings database; and identifying, from the embeddings database, a prompt template corresponding with the code snippet” which, conceptually, with broadest reasonable interpretation, provides further clarification as to the abstract idea/mental process/comparing/analyzing/evaluating/judging code snippet and samples, and judging/identifying/deciding/etc. a prompt template, and further clarification as to the insignificant extra solution activity of gathering/accessing/etc. data/information/templates in a database/etc., and the courts have identified functions such as gathering, displaying, updating, transmitting and storing data as well-understood, routine, conventional activity, see MPEP 2106.05(d). As such, claim 5 does not integrate the abstract idea/mental process into a practical application and is not significantly more than the abstract idea/mental process, and therefore claim 5 fails to correct the deficiencies of claim 1, and is rejected for similar reasoning as claim 1, above.
As per claim 6, it incorporates the deficiencies of claim 1, upon which it depends, and further recites “...generate, using the large language model, one or more additional transformed code snippets; and generate a transformed code based on the transformed code snippet and the one or more additional transformed code snippet, wherein the transformed code has the functionality of the code” which, conceptually, with broadest reasonable interpretation, provides further clarification as to the abstract idea/mental process, which does not integrate the abstract idea/mental process into a practical application and is not significantly more than the abstract idea/mental process. Therefore claim 6 fails to correct the deficiencies of claim 1, and is rejected for similar reasoning as claim 1, above.
As per claim 7, it incorporates the deficiencies of claim 1, upon which it depends, and further recites “...determine, based on the transformed code snippet, an additional prompt comprising an additional context; generate, utilizing the large language model, an additional transformed code snippet of a third code type based on the transformed code snippet and the additional prompt; and provide the additional transformed code snippet corresponding to the transformed code snippet” which, conceptually, with broadest reasonable interpretation, provides further clarification as to performance of the abstract idea/mental process using high level/generic computer components, and further recitation of an insignificant extra solution activity of transmitting/storing/displaying/etc. data/providing the additional transformed code snippet/etc., and the courts have identified functions such as gathering, displaying, updating, transmitting, and storing data as well-understood, routine, conventional activity, see MPEP 2106.05(d). As such, claim 7 does not integrate the abstract idea/mental process into a practical application and is not significantly more than the abstract idea/mental process, and therefore claim 7 fails to correct the deficiencies of claim 1, and is rejected for similar reasoning as claim 1, above.
As per claim 8, it incorporates the deficiencies of claim 1, upon which it depends, and further recites “...wherein the prompt further comprises one or more transformation examples comprising: an example of pre-transformed code; and an example of transformed code” which, conceptually, with broadest reasonable interpretation, provides further clarification as to the abstract idea/mental process, which does not integrate the abstract idea/mental process into a practical application and is not significantly more than the abstract idea/mental process. Therefore claim 8 fails to correct the deficiencies of claim 1, and is rejected for similar reasoning as claim 1, above.
As per claim 9, it incorporates the deficiencies of claim 1, upon which it depends, and further recites “...receive, from the device and via the second user interface, a modification to the transformed code snippet; and generate, based on the modification, a modified transformed code snippet” which, conceptually, with broadest reasonable interpretation, provides further clarification as to performance of the abstract idea/mental process/deciding/writing/generating/etc. transformed code snippet, and further recitation of an insignificant extra solution activity of gathering/receiving/etc. data/information/modification to transformed code snippet/etc. using high level/generic computer components/device and user interface/etc., and the courts have identified functions such as gathering, displaying, updating, transmitting, and storing data as well-understood, routine, conventional activity, see MPEP 2106.05(d). As such, claim 9 does not integrate the abstract idea/mental process into a practical application and is not significantly more than the abstract idea/mental process, and therefore claim 9 fails to correct the deficiencies of claim 1, and is rejected for similar reasoning as claim 1, above.
As per claims 10, 12, 13, 14, and 15, they recite computer-implemented methods having similar limitations as the systems of claims 1, 2, 5, 7, and 9, respectively, and as such recite similar abstract idea/mental processes and have similar deficiencies as claims 1, 2, 5, 7, and 9, respectively. Therefore, claims 10, 12, 13, 14, and 15 are rejected for similar reasoning as claims 1, 2, 5, 7, and 9, respective, above.
As per claim 11, it incorporates the deficiencies of claim 10, upon which it depends, and further recites “…providing, for display via a second code transformation user interface, the code snippet and the transformed code snippet” which, conceptually, with broadest reasonable interpretation, provides further recitation of an insignificant extra solution activity of displaying data/information/code snippet and transformed code snippet/etc. using high level/generic computer components/user interface/etc., and the courts have identified functions such as gathering, displaying, updating, transmitting, and storing data as well-understood, routine, conventional activity, see MPEP 2106.05(d). As such, claim 11 does not integrate the abstract idea/mental process into a practical application and is not significantly more than the abstract idea/mental process, and therefore claim 11 fails to correct the deficiencies of claim 10, and is rejected for similar reasoning as claim 10, above.
As per claim 16, it recites a non-transitory computer readable medium having similar limitations as the system of claim 1 and as such recites a similar abstract idea/mental process and has similar deficiencies as claim 1, above. Claim 16 recites the further additional elements of “A non-transitory computer readable medium storing instructions that, when executed by at least one processor, cause the at least one processor to” which, with broadest reasonable interpretation, recites that high level/generic computer components/non-transitory computer readable medium and at least one processor/etc. are used to implement/perform the abstract idea/mental process, and as such amounts to no more than mere instructions to apply the exception/abstract idea/mental process using high level/generic computer components, which does not integrate the abstract idea/mental process into a practical application and is not significantly more than the abstract idea/mental process. As such, the additional elements of claim 16 do not correct the deficiencies of claim 1, and therefore claim 16 is rejected for similar reasoning as claim 1, above.
As per claims 17, 18, 19, and 20, they recite non-transitory computer readable mediums having similar limitations as the systems of claims 11, 2, 5, and 7, and as such recite similar abstract ideas/mental process and have similar deficiencies as claims 11, 2, 5, and 7, respectively, and are therefore rejected for similar reasoning as claims 11, 2, 5, and 7, respectively, above.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-4, 6-12, 14-18, and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Ni et al. (herein called Ni) (US PG Pub. 2022/0188081 A1) and Singh et al. (herein called Singh) (US PG Pub. 2023/0018088 A1).
As per claim 1, Ni teaches: a system comprising: at least one processor; and a non-transitory computer readable medium storing instructions that, when executed by the at least one processor, cause the system to:
determine a selection of a code snippet from a code associated with a first code type and where the selected code snippet is displayed on a first user interface of a device (figs. 2 and 4, pars. [0002], [0011], [0027] [0032], [0042], [0045], [0048], user edits/works on/transforms/etc. source code/snippets/etc. in source code editor application of IDE displayed in GUI (source code snippet is displayed on first user interface of a device) to transform/convert source code, such as converting/transforming source code into multi-thread capable code (source code is associated with a first code type and is being transformed into a second code type), and users may designate/select source code snippet/source code snippet is captured/etc. for transformation/automated transformation/automated programming/automated editing/etc. (determine selection of code snippet from code associated with a first code type/code to be transformed/etc.).);
based on the selection of the code snippet, generate a prompt comprising a context associated with the code, wherein the context is related to a functionality of the code (pars. [0005]-[0007], [0014], [0030]-[0031, [0034], [0047]-[0048], context/intent of transformation of designated/captured/selected/etc. code snippet (based on selection of code snippet) is determined and input to machine learning model (generate prompt/input comprising context associated with code for machine learning) to generate/determine/recommend/etc. candidate code transformations, and the context/intent may include function/goal/task/etc. of the code (context is related to functionality of code).);
generate a transformed code snippet of a second code type using the code and the context (pars. [0026], [0030]-[0031], [0034], [0037], [0048]-[0050], source code snippet being transformed and context/intent is provided as input to machine learning model which generates/determines/identifies candidate source code snippet transformations/conversions such as candidate code that is multi-thread-capable/etc. based on the input code snippet and context/intent/etc. (generate transformed code snippet of a second code type/code that is multi-thread-capable/candidate source code transformations/etc. using the code and the context).); and
causing a second user interface of a device to present the transformed code snippet corresponding to the code snippet (pars. [0041]-[0042], [0050], candidate/recommended/etc. transformed source code snippets are presented to user in GUI/pop-up window/etc. (second user interface of device presents transformed code snippet corresponding to code snippet) for user to view/toggle through/etc. candidate transformed code snippets and provide selection/acceptance of candidate snippet for application/inclusion/etc. to the source code).
While Ni teaches using machine learning/neural network/etc. to generate transformed code snippets (ex: pars. [0004], [0007], [0012], [0028]-[0029], etc.) it does not explicitly state that the machine learning/neural network is a language model, and as such does not explicitly state, however Singh teaches:
using a large language model, generate a transformed code snippet of a second code type using the code and the context and based on the large language model understanding of the context of the code (pars. [0004]-[0005], [0007], [0032]-[0034], [0055], [0065], autoregressive language model is type of machine learning that is trained on multiple corpuses related to computer programming/multiple code bases in variety of programming languages/natural language documentation about computer programming/etc. (autoregressive language model is large language model) and trained autoregressive language model/large language model provided with input source code and indication of programmer intent (context) and processes input source code to be migrated/transformed from first language to second language/etc. and outputs migrated/transformed source code in second language based on programmer intent/context provided to language model (use large language model to generate transformed code snippet of second type/source code in second language using the code/first source code/etc. and the context/intent and based on the large language model understanding of the context of the code).).
Therefore, it would have been obvious to one of ordinary skill in the art, before the effective filing date of the claimed invention to add using a large language model, generate a transformed code snippet of a second code type using the code and the context and based on the large language model understanding of the context of the code, as conceptually taught by Singh, into that of Ni because these modifications allow for large language models to be used as the machine learning model used to transform/convert/modify/etc. code, which is desirable as it provides an effective method of automatically transforming/converting code using known machine learning methods thereby allowing for code to be transformed/converted automatically thereby saving time and resources that would have been spent manually transforming/converting code, while also increasing the usability of the transforming/converting by allowing for known machine learning models of large language models to perform the translating/converting thereby allowing for additional types of machine learning to be used, while helping to ensure that the transforming/converting is performed correctly/as desired.
As per claim 2, Ni further teaches:
determine a second code snippet from the code (figs. 2 and 4, pars. [0002], [0011], [0027] [0032], [0041]-[0042], [0045], [0048], user edits/works on/transforms/etc. source code/snippets/etc. in source code editor application of IDE displayed in GUI to transform/convert/modify source code, such as converting/transforming source code into multi-thread capable code, and users may designate/select source code snippet/source code snippet is captured/etc. for transformation/modification/automated transformation/automated programming/automated editing/etc., may modify transformed code/modify proposed transformation/etc. (determine selection of code snippet for transformation/modification/editing/etc. and determine further modifications/transformations/edits/etc. to transformed code). As user/programmer selects/designates/edits/etc. code snippets of a code being edited for transformation/modification/etc. including editing/modifying transformed code, it is obvious that the selection may be repeated for a second code snippet from the code/that a transformed code that was previously selected and transformed in a first transformation may be selected for further modification/etc..);
generate a second prompt comprising the context associated with the code and the second code snippet (pars. [0005]-[0007], [0014], [0030]-[0031, [0034], [0041], [0047]-[0048], context/intent of transformation/modification of designated/captured/selected/etc. code snippet/second code snippet/etc. is determined and input to machine learning model (generate prompt/input comprising context associated with code/second code snippet for machine learning to perform transformation) to generate/determine/recommend/etc. candidate code transformations, and the context/intent may include function/goal/task/etc. of the code. As context associated with code/second code snippet to be transformed/modified/edited/etc. is determined and input to machine learning/used in generated prompt to machine learning/etc., it is obvious to repeat the generation of the prompt for a second code snippet being modified/transformed/etc. and as such a second prompt comprising the context associated with the code and second code snippet is generated.);
combine the transformed code snippet and the second transformed code snippet (pars. [0025]-[0026], [0032]-[0033], [0041]-[0042], [0045], [0050], as user/programmer edits/modifies/makes sequence of edits to/etc. source code, source code snippets may be designated/captured/etc. for transformation/modifications/etc. via machine learning model, including modifying transformed code snippets transformed during first transformation that are being accepted/combined into the source code being edited, and edits/transformations associated with sequence of edits/transformations to code being made by programmer may be automated via machine learning and accepted/combined into code being edited. As multiple/first and second/sequence of/etc. edits/transformations may be made to code, including modifications/edits/ transformations made to code previously transformed/modified/etc., it is obvious that multiple transformed/edited/modified code snippets are accepted into the code being edited/modified by the user/programmer, and as such multiple first and second/etc. transformed/modified/etc. code snipes are combined/accepted/etc. into the code being edited.); and
cause the second user interface of the device to present the combined transformed code snippet and the second transformed code snippet (pars. [0011], [0032], [0042], [0050], source code editor is part of IDE displayed/presented in GUI/user interface and displays source code/edits to source code/source code transformations/etc.. As the source code and the edits/transformations to the source code are displayed in the GUI/user interface presenting the editor application, it is obvious that the GUI/user interface may be a second user interface presenting the combined transformed code snippet/source code including any edits/transformations made/first and second edits/transformations made/etc. and the second transformed code snippet/second code transformations/edits/etc..).
While Ni teaches using machine learning/neural network/etc. to generate transformed code snippets/second transformed code snippets/etc. (ex: pars. [0004], [0007], [0012], [0028]-[0029], etc.) it does not explicitly state that the machine learning/neural network is a language model, and as such does not explicitly state, however Singh teaches:
generate, using the large language model, a second transformed code snippet based on the large language model understanding of the context of the code (pars. [0004]-[0005], [0007], [0032]-[0034], [0055], [0065], autoregressive language model/large language model is provided with input source code and indication of programmer intent (context of the code) and processes input source code to be migrated/transformed from first language to second language/etc. and outputs migrated/transformed source code in second language based on programmer intent/context provided to language model (use large language model to generate transformed code snippet of second type/source code in second language using the code/first source code/etc. and the context/intent and based on the large language model understanding of the context of the code). As a transformed code snippet is generated by the large language model based on the context of the code being transformed/the large language model understanding of the context/etc., it is obvious to repeat the generation of a transformed code snippet for a second code snippet to be transformed, and as such it is obvious to use the large language model/autoregressive language model to generate a second transformed code snippet based on the large language model understanding of the context of the code.).
Therefore, it would have been obvious to one of ordinary skill in the art, before the effective filing date of the claimed invention to add u generate, using the large language model, a second transformed code snippet based on the large language model understanding of the context of the code, as conceptually taught by Singh, into that of Ni because these modifications allow for large language models to be used as the machine learning model used to transform/convert/modify/etc. code, which is desirable as it provides an effective method of automatically transforming/converting code using known machine learning methods thereby allowing for code to be transformed/converted automatically thereby saving time and resources that would have been spent manually transforming/converting code, while also increasing the usability of the transforming/converting by allowing for known machine learning models of large language models to perform the translating/converting thereby allowing for additional types of machine learning to be used, while helping to ensure that the transforming/converting is performed correctly/as desired.
As per claim 3, Ni further teaches:
generate a plurality of candidate transformed code snippets using the large language model (pars. [0025]-[0026], [0029], [0030, [0037], machine learning module (large language model from Singh) generates/creates/determines/identifies/etc. one or more candidate source code transformations (use large language model to generate plurality of candidate transformed code snippets).); and
cause the second user interface of the device to present the plurality of candidate transformed code snippets (pars. [0040]-[0042], candidate source code transformations are presented on GUI/pop-up window/etc. (second user interface of device presents plurality of candidate transformed code snippets) for user/programmer for viewing and selection for acceptance/incorporation/etc. into source code.).
As per claim 4, Ni further teaches: provide the transformed code snippet to a code repository (pars. [0039], as programmer makes changes to source code transformations (transformed code snippet) are added to prior source code repositories (provide transformed code snippet to a code repository) and become available as candidates to generate/recommend for automated programming tasks. As transformed source code/transformed code snippets are added to prior source code repositories it is obvious that the transformed code snippet is provided to a code repository/prior source code repository so it may also become available as a candidate to be generated/recommended for automated programming tasks.).
As per claim 6, Ni further teaches:
generate, using the large language model, one or more additional transformed code snippets (pars. [0026], [0030]-[0031], [0034], [0037], [0048]-[0050], source code snippet being transformed and context/intent is provided as input to machine learning model which generates/determines/identifies one or more/multiple/etc. candidate source code snippet transformations/conversions such as candidate code (one or more additional transformed code snippets including the candidate code snippet/transformed code snippet that will be selected and other/additional candidate transformed code snippets for consideration by programmer) that is multi-thread-capable/etc. based on the input code snippet and context/intent/etc. (generate transformed one or more additional transformed code snippets/code snippet of a second code type/code that is multi-thread-capable/candidate source code transformations/etc. and additional candidate transformed codes using the input code and the context). And as Singh teaches that the machine learning used to generate the transformed code may be a large language model, as seen above, it is obvious that the large language model may be used to generate the one or more additional transformed code snippets/candidate code transformations/etc..); and
generate a transformed code based on the transformed code snippet and the one or more additional transformed code snippet, wherein the transformed code has the functionality of the code (pars. [0037], [0041]-[0042], [0047], [0049], candidate source code transformations/relevant source code snippets/potentially suitable source codes/etc. are presented to programmer who toggles through/evaluates/etc. them and selects/accepts a desired/suitable/etc. source code snippet/transformation/etc. to be used/applied/etc. to source code (generate transformed code based on the transformed code snippet/selected candidate code transformation/etc. and the one or more additional transformed code snippet/other candidate code transformations presented to and viewed by programmer but not selected/etc.), and candidate source code transformations are source code transformation determined to have similar context including a function/having the functionality/etc. of the code (the transformed code has the functionality of the code).).
As per claim 7, Ni does not explicitly state, however Singh teaches:
determine, based on the transformed code snippet, an additional prompt comprising an additional context (pars. [0032]-[0034], [0040]-[0041], [0043], intent/context input/provided to autoregressive language model/large language model (prompt including context/intent) may include tuples including versions of source code prior to and after migrations and input tuple may be a triple in which a first version of source code is transformed into a second version/intermediate version/etc. which is then transformed into a third version. As the first version is transformed into a second version/intermediate version which is then transformed into a third version based on input/prompt including intent/context/etc., it is obvious that the second/intermediate version may be considered the transformed code snippet and an additional prompt comprising an additional context/input intent including a triple tuple having a second migration transforming the second/intermediate version into a third version/etc. is determined based on the transformed code snippet/to transform the second version into the third version/etc..);
generate, utilizing the large language model, an additional transformed code snippet of a third code type based on the transformed code snippet and the additional prompt (pars. [0032]-[0034], [0040]-[0041], [0043], intent/context input/provided to autoregressive language model/large language model (prompt including context/intent) may include tuples including versions of source code prior to and after migrations and input tuple may be a triple in which a first version of source code is transformed into a second version/intermediate version/etc. which is then transformed into a third version. As the second version/intermediate version is transformed into a third version by the autoregressive language model/large language model based on input/prompt including intent/context that includes a second migration from the second version to the third version, it is obvious that the large language model, generates an additional transformed code snippet of a third code type/third version/etc. based on the transformed code snippet/second version/intermediate version and the additional prompt/third part of the triple tuple migrating the second version to the third version/etc..); and
provide the additional transformed code snippet corresponding to the transformed code snippet (pars. [0048]-[0049], [0055]-[0056], input code is migrated/transformed/changed/etc. by autoregressive language model/ARLM according to 3 tuple demonstrations to output post migration code (transformed code snippet including additional transformed code snippet/third version of code resulting from second/additional migration/transformation performed on second/intermediate version of code) and transformations/changes to code/post migration code/etc. are provided to programmer in window in IDE for viewing/reviewing/selection/acceptance/rejection/etc.).
Therefore, it would have been obvious to one of ordinary skill in the art, before the effective filing date of the claimed invention to add determine, based on the transformed code snippet, an additional prompt comprising an additional context; generate, utilizing the large language model, an additional transformed code snippet of a third code type based on the transformed code snippet and the additional prompt; and provide the additional transformed code snippet corresponding to the transformed code snippet, as conceptually taught by Singh, into that of Ni because these modifications allow for additional desired transformations/changes/modifications/etc. to be made to the source code, which is desirable as it increases usability by allowing for additional transformations/modifications/migrations/etc. desired by users to be performed thereby helping to ensure that code versions desired by users may be produced thereby increasing user control over the transformations and increasing the usability of the code.
As per claim 8, Ni does not explicitly state, however Singh teaches:
wherein the prompt further comprises one or more transformation examples comprising: an example of pre-transformed code; and an example of transformed code (pars. [0032]-[0035], [0063], trained autoregressive language model is provided input (prompt) from a programmer on the fly/on demand/etc. that includes demonstration expressing programmer’s intent/context and source code to be migrated/transformed/etc. from first/pre-migration version to second/post-migration version, and intent/context/demonstration includes tuples of code having one element that is a pre-migration version of a source code snippet and a second element that is a post-migration version of a source code snippet (prompt/input comprises transformation/migration examples comprising example of pre-transformed code/pre-migration version of code snippet and example of transformed code/post-migration version of code snippet).).
Therefore, it would have been obvious to one of ordinary skill in the art, before the effective filing date of the claimed invention to add wherein the prompt further comprises one or more transformation examples comprising: an example of pre-transformed code; and an example of transformed code, as conceptually taught by Singh, into that of Ni because these modifications allow for an effective method of notifying/setting up/priming/etc. a trained model/language model/etc. to transform/translate/migrate/etc. input code from a first version to a desired second version, which is desirable as it helps ensure that the model translates/transforms/etc. input code correctly/as desired/etc. into a desired version, thereby helping to ensure that code is transformed/migrated correctly/as desired by a user while saving time and resources that would be spent manually transforming/migrating code.
As per claim 9, Ni further teaches:
receive, from the device and via the second user interface, a modification to the transformed code snippet (pars. [0040]-[0041], candidate transformed source code snippets are presented to user/programmer on GUI and programmer/user interacts with GUI and modifies proposed/candidate transformation/transformed code snippet (receive modification to transformed code snippet from device via second user interface/GUI).); and
generate, based on the modification, a modified transformed code snippet (pars. [0041], programmer modifies proposed transformation/candidate code transformation/transformed code snippet and modified proposed transformed is accepted to be applied to the source code (generates a modified transformed code snippet).).
As per claims 10, 12, 14 and 15, they recite computer implemented methods having similar limitations as the systems of claims 1, 2, 7, and 9, respectively, and are therefore rejected for similar reasoning as claims 1, 2, 7, and 9, respectively, above.
As per claim 11, Ni further teaches: providing, for display via a second code transformation user interface, the code snippet and the transformed code snippet (pars. [0040]-[0042], GUI is presented that presents/depicts/displays/etc. (display via second code transformation user interface/GUI) selected source code snippet prior to transformation (the code snippet) and candidate source code transformations for program to toggle through/view/etc. and select desired transformed source code (the transformed code snippet).).
As per claims 16, 17, 18, and 20, they recite non-transitory computer readable mediums having similar limitations as the system of claim 1, the method of claim 11, and the systems of claims 2 and 7, respectively, and are therefore rejected for similar reasoning as claims 1, 11, 2, and 7, respectively, above.
Claims 5, 13, and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Ni et al. (herein called Ni) (US PG Pub. 2022/0188081 A1) and Singh et al. (herein called Singh) (US PG Pub. 2023/0018088 A1) in further view of Makkar (US PG Pub. 2019/0079754 A1).
As per claim 5, Ni further teaches:
accessing an embeddings database comprising code samples (pars. [0030]-[0031], [0033]-[0035], embedding spaces corresponding to source code transformation repositories (embeddings database/repository) containing prior source code transformations (comprising code samples/prior code transformations/etc.) for use by machine learning to generate/recommend/rank/etc. candidate source code transformations based on input source code to be transformed and context of the code.); and
comparing the code snippet with the code samples in the embeddings database (pars. [0030]-[0031], [0033], [0035]-[0036], source code snippet being edited/changed by programmer (code snippet) is mapped/compared/etc. to prior source code transformations in imbedding spaces/repositories/embeddings database to determine prior code transformations similar to source code snippet currently being edited/transformed (compare code snippet with code samples in embeddings database to determine similar code).).
While Ni teaches that machine learning uses the prior code transformations/code samples to generate/recommend/etc. candidate code transformations (ex: pars. [0030]-[0031], [0033]-[0034]), Ni does not explicitly state, however Makkar teaches:
accessing an embeddings database comprising prompt templates and code samples (pars. [0006], [0018]-[0020], [0034]-[0035], [0037], [0075], [0125], [0130], library contains code/snippets/etc. to be reused (embedding database comprising code samples from Ni) and code/snippets stored in library are templatized and stored in specified format (library/embeddings database comprises prompt templates and code samples), and machine learning (large language model/machine learning from Ni and Singh) matches input code to stored code/snippets in library to provide/recommend/generate/etc. snippets/code from library that may replace/be used in place of/etc. input code which includes formatting/templatizing/etc. input code into format used by library for comparison.); and
identifying, from the embeddings database, a prompt template corresponding with the code snippet (pars. [0018]-[0020], [0034]-[0035], [0037], [0075], [0125], [0130], (pars. [0006], [0018]-[0020], [0034]-[0035], [0037], [0075], [0125], [0130], library/embeddings database contains code/snippets/etc. to be reused and code/snippets stored in library are templatized and stored in specified format, and machine learning/language model/NLP/etc. matches input code to stored code/snippets in library to provide/recommend/generate/etc. snippets/code from library that may replace/be used in place of/etc. input code which includes formatting/templatizing/etc. input code into format used by library for comparison (identifying prompt/input template corresponding with the code snippet). As the code/code snippet input to the machine learning/NLP/language model/etc. is templatized into the format used by the library/database so the machine learning/NLP/language model may compare the code snippet to code stored in library/code samples to generate/recommend/provide/etc. code samples in library for use, it is obvious that a prompt/input template corresponding with the code snippet is identified from the database/library so the code snippet may be templatized/formatted/etc. so comparison/matching/etc. may be performed with code in library/database.).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to add accessing an embeddings database comprising prompt templates and code samples; and identifying, from the embeddings database, a prompt template corresponding with the code snippet, as conceptually taught by Makkar, into that of Ni and Singh because these modifications allow for an effective method of formatting code input to machine learning/large language models/etc. so that it may be accurately compared to stored in a database/repository for reuse thereby helping to ensure that code identified in/retrieved from/etc. the database/repository and reused in code being developed/edited is correct/desired code, thereby helping to ensure that programs being developed/edited operate correctly/as desired while allowing for developed code to be reused effectively thereby saving time and resources that would be spent having to repeatedly develop code.
As per claims 13 and 19, they recite a computer implemented method and a non-transitory computer readable medium, respectively, having similar limitations as the system of claim 5, and are therefore rejected for similar reasoning as claim 5, above.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
De Toni et al. US PG Pub. 2024/0184555 A1 teaches that machine learning/language models may be used to translate source code from an original/first programming language into a second, third, etc. programming language which may include determining and correcting errors in the translations.
Prasad et al. US PG Pub. 2022/0244937 A1 teaches that machine learning may be used to modify software code based on provided requirements.
Haze et al. US PG Pub. 2021/0303447 A1 teaches that machine learning may be used to recommend/generate/etc. code modifications for code being developed in a development environment/IDE based on provided context of the code.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to DOUGLAS M SLACHTA whose telephone number is (571)270-0653. The examiner can normally be reached Monday-Friday 6:30am-4pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Chat Do can be reached at 571-272-3721. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/DOUGLAS M SLACHTA/Examiner, Art Unit 2193